<header>
<div class="decoration-i">✦</div>
<div class="decoration-ii">✦</div>
<div class="decoration-iii">✦</div>
<div class="decoration-v">✦</div>
<div id="header-top">
<!-- SOCIAL MEDIA ICONS (POPULATED IN THE social media PASSAGE) -->
<nav class="social-media" data-passage="social media">
</nav>
<div class="middle">
<!-- STORY TITLE ETC. WHEN MENU IS CLOSED -->
<div class="title" data-passage="story title">
</div>
<!-- OPEN MENU ICON -->
<span id="menu-toggle">
<img src="img/solid/chevron-down.svg" style="height:25px; width:25px;"/>
</span>
</div>
<!-- SETTINGS, RESTART, SAVE & FULLSCREEN BUTTONS -->
<nav class="tools">
<span id="header-settings-button"><img src="img/solid/cog.svg"/></span>
<span id="header-restart-button"><img src="img/solid/undo.svg"/></span>
<span id="header-saves-button"><img src="img/solid/save.svg"/></span>
<span id="header-fullscreen-button"><img src="img/solid/expand-alt.svg"/></span>
</nav>
</div>
<div id="header-body">
<div class="content">
<!-- SETTINGS, RESTART, SAVE & FULLSCREEN BUTTONS -->
<nav class="tools" style="display:flex; flex-direction:row;">
<span id="menu-settings-button"><img src="img/solid/cog.svg"/></span>
<span id="menu-restart-button"><img src="img/solid/undo.svg"/></span>
<span id="menu-saves-button"><img src="img/solid/save.svg"/></span>
<span id="menu-fullscreen-button"><img src="img/solid/expand-arrows-alt.svg"></span>
</nav>
<nav class="tools">
</nav>
<!-- STORY LOGO (POPULATED IN THE story logo PASSAGE) -->
<div class="logo-image" data-passage="story logo">
</div>
<!-- STORY LINKS (POPULATED IN THE story links PASSAGE) -->
<ul id="story-menu" data-passage="story links">
</ul>
<!-- SOCIAL MEDIA ICONS (POPULATED IN THE social media PASSAGE) -->
</div>
<<link "« Return to game" $return>><</link>>
</div> <!-- header body end tag -->
</header>
<div id="main">
<div class="decoration-separator">
<span>✦</span>
<span>✦</span>
<span>✦</span>
<span>✦</span>
</div>
<div id="passages">
</div>
<div class="decoration-separator">
<span>✦</span>
<span>✦</span>
<span>✦</span>
<span>✦</span>
</div>
</div> <!-- #main -->
<footer>
<!-- BACKWARDS AND FORWARDS BUTTONS, YOU CAN REMOVE THIS IF YOU DON'T WANT THEM IN YOUR STORY -->
<span id="backwards-button"><img src="img/solid/chevron-left.svg"></span>
<span>✦</span>
<span id="forwards-button"><img src="img/solid/chevron-right.svg"></span>
</footer> // FOR SETTING STATS THAT NEED TO BE IN PLAY AT THE START OF THE STORY
//CORE
<<set $devi = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" viewBox="0 0 36 36" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><circle fill="#AA8DD8" cx="18" cy="18" r="18"/><path fill="#AA8DD8" d="M10 4C7.42 4 4.369 1.534 3.414.586A1.998 1.998 0 0 0 1.235.153A1.998 1.998 0 0 0 0 2c0 3.459 1.672 10 8 10a2 2 0 0 0 1.789-1.106l2-4A1.999 1.999 0 0 0 10 4zM34.766.153a1.996 1.996 0 0 0-2.18.434C31.7 1.472 28.589 4 26 4a1.999 1.999 0 0 0-1.789 2.895l2 4A2 2 0 0 0 28 12c6.328 0 8-6.541 8-10c0-.809-.487-1.538-1.234-1.847z"/><path fill="#553986" d="M27.335 25.629a.501.501 0 0 0-.635-.029c-.039.029-3.922 2.9-8.7 2.9c-4.766 0-8.662-2.871-8.7-2.9a.5.5 0 0 0-.729.657C8.7 26.472 11.788 31.5 18 31.5s9.301-5.028 9.429-5.243a.499.499 0 0 0-.094-.628zm-11.628-7.336C12.452 15.038 7.221 15 7 15a1 1 0 0 0-.001 2c.029 0 1.925.022 3.983.737c-.593.64-.982 1.634-.982 2.763c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-.174-.019-.34-.037-.507c.013 0 .025.007.037.007a.999.999 0 0 0 .707-1.707zM29 15c-.221 0-5.451.038-8.707 3.293A.999.999 0 0 0 21 20c.013 0 .024-.007.036-.007c-.016.167-.036.333-.036.507c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-1.129-.389-2.123-.982-2.763A13.928 13.928 0 0 1 29.002 17A1 1 0 0 0 29 15z"/></svg>'>>
<<set $divi = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" viewBox="0 0 36 36" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><circle fill="#AA8DD8" cx="18" cy="18" r="18"/><path fill="#AA8DD8" d="M10 4C7.42 4 4.369 1.534 3.414.586A1.998 1.998 0 0 0 1.235.153A1.998 1.998 0 0 0 0 2c0 3.459 1.672 10 8 10a2 2 0 0 0 1.789-1.106l2-4A1.999 1.999 0 0 0 10 4zM34.766.153a1.996 1.996 0 0 0-2.18.434C31.7 1.472 28.589 4 26 4a1.999 1.999 0 0 0-1.789 2.895l2 4A2 2 0 0 0 28 12c6.328 0 8-6.541 8-10c0-.809-.487-1.538-1.234-1.847z"/><path fill="#553986" d="M27.335 25.629a.501.501 0 0 0-.635-.029c-.039.029-3.922 2.9-8.7 2.9c-4.766 0-8.662-2.871-8.7-2.9a.5.5 0 0 0-.729.657C8.7 26.472 11.788 31.5 18 31.5s9.301-5.028 9.429-5.243a.499.499 0 0 0-.094-.628zm-11.628-7.336C12.452 15.038 7.221 15 7 15a1 1 0 0 0-.001 2c.029 0 1.925.022 3.983.737c-.593.64-.982 1.634-.982 2.763c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-.174-.019-.34-.037-.507c.013 0 .025.007.037.007a.999.999 0 0 0 .707-1.707zM29 15c-.221 0-5.451.038-8.707 3.293A.999.999 0 0 0 21 20c.013 0 .024-.007.036-.007c-.016.167-.036.333-.036.507c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-1.129-.389-2.123-.982-2.763A13.928 13.928 0 0 1 29.002 17A1 1 0 0 0 29 15z"/></svg>'>>
<<set $fiti = '<img src="img/solid/dumbbell.svg">'>>
<<set $player>>
<<set $firstname = "Emily">>
<<set $goldentoken=0>>
<<set $lastname = "Rogers">>
<<set $nickname = "Star">>
<<set $popularity = "Ellie">>
<<set $debt = 1000000>>
<<set $rent = 300>>
<<set $money = 650>>
<<set $fitness = 5>>
<<set $hunger =0>>
<<set $beauty = 20>>
<<set $intelligence = 40>>
<<set $worklimit = $worklimit or 3>>
<<set $milker=0>>
//SOCIAL MEDIA
<<set $followersInst = 0>>
<<set $followersOF = 0>>
<<set $followersCamStar = 0>>
//LIVING
<<set $energy= 80>>
<<set $energytotal= 100>>
<<set $sleep= 0>>
<<set $deviancy= -10>>
<<set $exercised=0>>
<<set $tea = $tea or 4>>
<<set $whiskey = $whiskey or 0>>
<<set $wine = $wine or 0>>
<<set $beer = $beer or 0>>
<<set $milkBuckets = $milkBuckets || 0>>
//COOLDOWNS
<<set $storeCD = 0>>
<<set $milkCD=0>>
<<set $gymMembership = 0>>
//TIME
<<set $landlordCD=0>>
<<set $timeCounter=4>>
<<set $timeOfDay = ["Early-Morning", "Morning", "Noon", "Afternoon", "Evening", "Late-Night"]>>
<<set $DayOfWeek = ["Monday", "Tuesday", "Wednesday","Thursday", "Friday","Saturday","Sunday"]>>
<<set $Day=1>>
<<set $weekday = $DayOfWeek[$Day]>>
<<set $time = $timeOfDay[$timeCounter]>>
<<set $docCD = $docCD or 7>>
<<set $DoctorSexCD= $DoctorSexCD or 0>>
//CLOTHNG
<<set $hairColorList=["brown","red","black","blonde"]>>
<<set $hairColor = $hairColorList[0]>>
<<set $bodyShapeList=["large","overw","fit","sexy"]>>
<<set $bodyShape= $bodyShapeList[0]>>
<<set $closet = {
"Casual Clothing": [
{
"name": "Casual Day",
"img": "casual.png",
"imageKey": "casual",
"qpointer": "Perfect for a stroll downtown or just chilling at home.",
"custom": false,
"owned": true,
"price": 50,
"svetlanaDialogue": "Ah, this ensemble speaks of effortless chic, my dear. Simple, yet sophisticated. Perfect for making an impression without trying too hard. Only $50!"
},
{
"name": "Southern Belle",
"img": "southern.png",
"imageKey": "southern",
"qpointer": "Perfect for a stroll downtown or just chilling at home.", /* You might want to update this qpointer */
"custom": false,
"owned": false,
"price": 175,
"svetlanaDialogue": "This piece has such Southern charm, doesn't it? It whispers of warm evenings and sweet tea on the porch. Radiates grace! A steal at $175."
}
],
"Underwear": [
{
"name": "Classic White", /* Renamed for clarity */
"img": "underwear.png",
"imageKey": "underwear",
"qpointer": "I just love my tighty whities. My landlord loves them too",
"custom": false, /* Removed duplicate custom key */
"owned": true,
"price": 60,
"svetlanaDialogue": "The foundation of any great outfit, darling! Comfort and simplicity itself. Essential, wouldn't you agree? Just $60."
}
],
"Work Attire": [
{
"name": "Waitress Uniform",
"img": "waitress.png",
"imageKey": "waitress",
"qpointer": "Time to make some cash at the bistro.",
"custom": false, /* Removed duplicate custom key */
"owned": true,
"price": 140,
"svetlanaDialogue": "Practical *and* presentable. Even hard work deserves a touch of style. Essential for the working woman who values looking sharp. A bargain for $140."
}
],
"Formal/Party Wear": [
{
"name": "Pink Party Dress",
"img": "pinkdress.png",
"imageKey": "pinkdress",
"qpointer": "Maybe I should hit the club tonight.",
"custom": false,
"owned": false,
"price": 250,
"svetlanaDialogue": "Oh, this pink number! It simply screams 'life of the party'! Flirty, fun, and guaranteed to turn heads. Imagine the entrances you'll make! Worth every bit of $250."
}
],
"Sport Wear": [
{
"name": "Sports 2 piece",
"img": "gym.png",
"imageKey": "gym",
"qpointer": "I could run around in the park or maybe get a gym membership.",
"custom": false,
"owned": false,
"price": 160,
"svetlanaDialogue": "For the active woman! Stay stylish even during your workouts. This fabric breathes wonderfully, darling. Excellent quality for just $160."
},
{
"name": "Red bikini",
"img": "bikini.png",
"imageKey": "bikini",
"qpointer": "I could go to the beach and meet people.",
"custom": false,
"owned": false,
"price": 260,
"svetlanaDialogue": "Pure Elegance! You can enjoy your time on the beach with class. You'll turn heads and get an amazing tan, darling. Excellent quality for just $260."
},
{
"name": "Milk Girl Swimsuit",
"img": "milkgirl.png",
"imageKey": "milkgirl",
"qpointer": "The pattern reminds me of yummy milk.",
"custom": false,
"owned": false,
"price": 150,
"svetlanaDialogue": "Inspired by the milk sellers of the country i come from. The breasts sit well in this $150 garment."
}
],
"Cosplay": [
]
} >>
<<set $boobshapelist = ["base","medium","large"]>>
<<set $buttshapelist = ["base","medium","large"]>>
<<set $Svetcloset = {
"Casual Clothing": $casualClothing,
"Underwear": [
{ "name": "underwear", "img": "underwear.png", "imageKey": "underwear", "qpointer": "I just love my tighty whities. My landlord loves them too" , "custom":false, "custom":false, "custom":false}
],
"Work Attire":$workClothing,
"Formal/Party Wear": $formalClothing,
"Sport Wear": $sportClothing
} >>
<<set $wornOutfit=$closet["Casual Clothing"][0].imageKey>>
<<set $outfit=$hairColor+"-"+$bodyShape+"-"+$wornOutfit>>
<<set $usnum = 0>>
<<set $lsnum = 0>>
<<set $uppershape = $boobshapelist[$usnum]>>
<<set $lowershape = $buttshapelist[$lsnum]>>
<<set $casualClothing = [
{name: "Hoodie dress", price: 30, imageKey: "hoodie_dress", qpointer: "A cozy and stylish hoodie dress, perfect for casual outings."},
{name: "Leather Jacket fit", price: 120, imageKey: "leather_jacket", qpointer: "A sleek leather jacket that never goes out of style."},
{name: "Texas heat", price: 40, imageKey: "texas_heat", qpointer: "A cool and comfy outfit, great for warm weather."},
{name: "Cute Mess", price: 50, imageKey: "cute_mess", qpointer: "A trendy yet playful fit for everyday wear."}
] >>
<<set $workClothing = [
{name: "Waitress", price: 150, imageKey: "waitress", qpointer: "A professional uniform for serving tables in style."},
{name: "Sexy waitress", price: 100, imageKey: "sexy_waitress", qpointer: "A bold twist on the classic waitress look."},
{name: "Strip Hostess", price: 300, imageKey: "strip_hostess", qpointer: "An alluring outfit for entertaining guests."},
{name: "Dress Shoes", price: 120, imageKey: "dress_shoes", qpointer: "Elegant and sleek shoes to complete a work outfit."},
{name: "Tie", price: 20, imageKey: "tie", qpointer: "A classic tie for a professional look."}
] >>
<<set $businessClothing = [
{name: "Dress Shirt", price: 50, imageKey: "dress_shirt", qpointer: "A crisp dress shirt for a sharp appearance."},
{name: "Blazer", price: 100, imageKey: "blazer", qpointer: "A tailored blazer for a refined business look."},
{name: "Tailored Suit", price: 300, imageKey: "tailored_suit", qpointer: "A high-quality suit for making an impression."},
{name: "Dress Shoes", price: 120, imageKey: "dress_shoes", qpointer: "Polished dress shoes for a professional setting."},
{name: "Tie", price: 20, imageKey: "tie", qpointer: "A formal tie to complete a business ensemble."}
] >>
<<set $sportClothing = [
{name: "Running Shoes", price: 280, imageKey: "running_shoes", qpointer: "Comfortable shoes built for running and training."},
{name: "Pullup Bar", price: 20, imageKey: "pullup_bar", qpointer: "A simple yet effective tool for strength training."},
{name: "Track Pants", price: 550, imageKey: "track_pants", qpointer: "Lightweight pants ideal for workouts or casual wear."},
{name: "Sports Jacket", price: 900, imageKey: "sports_jacket", qpointer: "A high-performance jacket for athletic activities."},
{name: "Yoga Mat", price: 150, imageKey: "yoga_mat", qpointer: "A must-have for yoga and floor exercises."}
] >>
<<set $formalClothing = [
{name: "High Fashion Dress", price: 80, imageKey: "high_fashion_dress", qpointer: "An elegant dress that exudes sophistication."},
{name: "Mini Dress", price: 20, imageKey: "mini_dress", qpointer: "A cute and stylish mini dress for a night out."},
{name: "Tie-up Dress", price: 50, imageKey: "tie_up_dress", qpointer: "A trendy tie-up dress perfect for clubbing."},
{name: "Apple Bottom Style", price: 90, imageKey: "apple_bottom", qpointer: "A chic dress that highlights your curves."},
{name: "Girls Night Fit", price: 15, imageKey: "girls_night", qpointer: "A fun outfit for a girls' night out."}
] >>
<<set $OFClothing = [
{
"name": "Harley Queen",
"img": "harley.png",
"imageKey": "harley",
"qpointer": "Maybe there's a comic con or costume party happening somewhere.",
"custom": true,
"owned": false,
"price": 250,
"svetlanaDialogue": "Unleash your inner mischief! A bold statement piece, meticulously crafted. This one is a masterpiece of playful rebellion. A unique piece for $250."
},
{
"name": "Ranni fit",
"img": "ranni.png",
"imageKey": "ranni",
"qpointer": "The perfect outfit for a cosplay event or a themed photoshoot.",
"custom": true,
"owned": false,
"price": 300,
"svetlanaDialogue": "Ah, a touch of arcane elegance. Very mysterious, very captivating... The detail work is simply divine, no? For the discerning collector, $300."
},
{name: "Virgin Killer sweater", price: 4000, imageKey: "virgin_killer", qpointer: "A bold and seductive sweater that turns heads."},
{name: "Yoga Fit", price: 200, imageKey: "yoga_fit", qpointer: "A flexible and comfy yoga outfit for any session."},
{name: "Track Star", price: 1050, imageKey: "track_star", qpointer: "An athletic look that screams confidence."},
{name: "Maid outfit", price: 700, imageKey: "maid_outfit", qpointer: "A classic maid outfit for themed occasions."},
{name: "Pikachu fit", price: 1900, imageKey: "pikachu_fit", qpointer: "A cute and electrifying cosplay fit."},
{name: "Rabbi fit", price: 2000, imageKey: "ranni", qpointer: "An elegant and mystical outfit for cosplay lovers."},
{name: "Haribel", price: 3000, imageKey: "haribel", qpointer: "A striking and powerful cosplay ensemble."},
{name: "Rabbit dress", price: 5000, imageKey: "rabbit_dress", qpointer: "A playful and charming bunny-themed dress."},
{name: "SpiderGwen", price: 7000, imageKey: "spidergwen", qpointer: "A sleek superhero-inspired suit."},
{name: "Egirl heaven", price: 10000, imageKey: "egirl_heaven", qpointer: "The ultimate outfit for the egirl aesthetic."}
] >>
//ELECTRONICS
<<set $electronics = [
{name: "Smart Phone(WIP)", price: 1000000, img:"img/items/sphoneicon.png", qpointer:"sphone", owned:false},
{name: "Sound system", price: 500, img:"img/items/soundsicon.png", qpointer:"sounds", owned:false},
{name: "4k Smart TV", price: 850, img:"img/items/tvicon.png", qpointer:"tv", owned:false},
{name: "Breast Milk Pump", price: 550, img:"img/items/pumpicon.png", qpointer:"pump", owned:false},
{name: "Coffee Machine", price: 250, img:"img/items/coffeemachineicon.png", qpointer:"coffee", owned:false},
]>>
/* */
//GENERAL STORE
<<set $generalStuff=[
{name:"Healthy Food", price:40, img:"img/items/saladicon.png", qpointer:"healthyfood"},
{name:"Normal Food", price:30, img:"img/items/pastaicon.png", qpointer:"normalfood"},
{name:"Junk Food", price:20, img:"img/items/donuticon.png", qpointer:"junkfood"},
{name:"Coffee beans x5", price:70, img:"img/items/coffeeicon.png", qpointer:"coffee"},
{name:"Tea leaves x5", price:70, img:"img/items/teaicon.png", qpointer:"tea"},
{name:"A bottle of Whiskey", price:200, img:"img/items/whiskeyicon.png", qpointer:"whiskey"},
{name:"A bottle of Wine", price:150, img:"img/items/wineicon.png", qpointer:"wine"},
{name:"Beer x3", price:80, img:"img/items/beericon.png", qpointer:"beer"},
{name:"Makeup(WIP)", price:30, img:"img/items/makeupicon.png", qpointer:"makeup"},
{name:"Shower Supplies(WIP)", price:50, img:"img/items/showericon.png", qpointer:"shower"},
{name:"Internet(1 week)(WIP)", price:"500", img:"img/items/neticon.png", qpointer:"internet"},
]>>
//SALON
<<set $salonStuff=[
{name:"Blonde Session", price:100, img:"img/items/blonde.png", qpointer:"Blonde"},
{name:"Brunette Session", price:100, img:"img/items/brunette.png", qpointer:"Brunette"},
{name:"Black Session", price:100, img:"img/items/blackhair.png", qpointer:"Black"},
{name:"Red Session", price:100, img:"img/items/redhair.png", qpointer:"Red"},
{name:"Wax body hair)", price:320, img:"img/items/wip.png", qpointer:"makeup"},
{name:"Tattoo-Thighs(WIP)", price:5000000, img:"img/items/wip.png", qpointer:"skin"},
]>>
//ITEMS
<<set $makeup=0>>
<<set $sexymakeup=0>>
<<set $healthyFood=1>>
<<set $junkFood=1>>
<<set $normalFood=3>>
<<set $dirt = 4>>
<<set $car= 0>>
<<set $storyinitials= 0>>
//EVENTS
<<set $datewith>>
//relation variables
<<set $jim =1>>
<<set $kofi = 1>>
<<set $candy = 1>>
<<set $M=0>>
<<set $leavingHome=[]>>
<<set $gStore =0>>
<<set $taxi=[]>>
<<set $waitress=[]>>
<<set $gym=[]>>
<<set $gymMembership = 0>>
<<set $gymtrainer=[]>>
<<set $office=[]>>
<<set $landlord=0>> //tracks if landlord was visited before
<<set $relationships = {
"jim": {
"affection": $jim,
"gender":"male",
image: 'img/characters/jim-chat.jpg',
"likes": ["coffee", "fit", "action"],
"dislikes": ["large", "tea"],
"personality": "dominant",
"description": "Your manager at the restaurant, he’s got the same deadpan expression he sports at the bistro.",
"house_reactions": [
"Jim glances around briefly, then shrugs. 'Well, it<punc>s... functional.",
"Not bad. Feels kinda minimal.",
"Pretty nice. You actually put effort into this, huh?",
"Alright, I gotta admit—this place has got some style. I respect it'"
],
"greetsoft": "Hah. That’s more like it. Daddy likes that.",
"greetingdom": "Tch. You trying to challenge me? Tone it down.",
"drinkreply": "A strong coffee will do!",
"drinkresponse":[
["Hmph. A classic. Good choice.", 2],
["Tea? Seriously? Not my thing.", -1],
["Whiskey? Strong pick. I respect that.", 1],
["Wine? Not really my style.", 0],
["Beer? Nah, I prefer something with a kick.", -1],
["Water? Boring, but practical.", 0]
]
},
"kofi": {
"affection":$kofi,
"gender":"male",
image: 'img/characters/Kofi-chat.jpg',
"likes": ["tea", "healthy food", "large", "comedy"],
"dislikes": ["fit", "alcohol"],
"personality": "switch",
"description": "The tall Jamaican chef stands clad in his casual clothes holding what looks to be a dish tray. His athletic frame is evident and his open smile is contagious.",
"house_reactions": [
"Kofi frowns slightly. 'I thought it would be... better, you know?",
"He nods approvingly. 'Cozy, cozy. Could use somma plants, though.",
"This crib hava a good energy. Erryting nice",
"Now THIS a home! Feels warm, inviting—like ah good food or ah smooth island tea, yeah?"
],
"greetsoft": "Haha, no need to be shy! Speak up, friend.",
"greetingdom": "Woah, woah—calm down there, big boss. No need to flex.",
"drinkreply": "Yuh can gimme acup a yuh hottest tea!",
"drinkresponse":[
["Coffee, huh? Strong, but I prefer tea.", 0],
["Ahh, now that’s what I like! Perfect.", 2],
["Whiskey? Nah, mi nuh deal wid dat.", -2],
["Wine? Eh, could be worse.", 0],
["Beer? Too heavy, not my thing.", -1],
["Water? A healthy choice. Respect!", 1]
]
},
"autumn": {
"affection": $Autumn,
"gender":"female",
image: 'img/characters/Autumn-chat.jpg',
"likes": ["whiskey"],
"dislikes": ["mc", "dominant"],
"personality": "dominant",
"description": "She looks as peaceful and refreshing as ever. Her eyes gleam with comfort , and desire.",
"house_reactions": [
"Autumn tilts her head. 'Huh. It’s a little... empty.'",
"She scans the room, taking in the details. 'Not bad. It has its charm.'",
"A small smile tugs at her lips. 'I like this. It feels... comfortable.'",
"She runs a hand over the furniture. 'This place suits you. It feels lived-in, in the best way.'"
],
"greetsoft": "'Mmm. Now that’s a nice way to say hello.",
"greetingdom": "'Excuse me? Looks like our litle doggy needs to be punished.",
"drinkreply": "Standing around the spa all day is a little stressful. A little bit of whiskey hasn<punc>t hurt anybody.",
"drinkresponse":[
["Coffee? Hah, I’m more of a whiskey girl.", -1],
["Tea? That’s cute. Not for me, though.", -1],
["Now we’re talking. You know how to treat a lady.", 2],
["Wine? Fancy. I don’t mind it.", 1],
["Beer? Ugh, I can’t stand the smell.", -2],
["Water? Sensible, but dull.", 0]
]
},
"candy": {
"affection": $Candy,
"gender":"trans",
image: 'img/characters/Candy-chat.jpg',
"likes": ["water", "exercise"],
"dislikes": ["wine", "junk food"],
"personality": "dominant",
"description": "Your coworker at Del Bistro and morning running buddy. She looks ravishing.",
"house_reactions": [
"Candy raises an eyebrow. 'Kinda expected something...different.'",
"She gestures around. 'It’s nice. You keep it tidy, at least.'",
"Candy grins. 'I like this space! It’s got personality.'",
"She spins in place, taking it all in. 'Wow, I love this! It’s so well put together!'"
],
"greetsoft": "'Oh? Being polite, huh? I like that.'",
"greetingdom": "Oh? You think you can just bark orders? Try again.",
"drinkreply": "Im feeling real thirsty babe. You got any water?",
"drinkresponse":[
["Coffee? Keeps you moving. I like it.", 1],
["Tea? Not bad, but I prefer something refreshing.", 0],
["Whiskey? Hah, trying to impress me?", 0],
["Wine? Too many empty calories.", -1],
["Beer? Ugh, I can feel the bloat already.", -2],
["Thanks babe, this stuff keeps me sexy.", 2]
]
},
"barbara": {
"affection": $Barbara,
"gender":"female",
image: 'img/characters/barbra-chat.jpg',
"likes": ["coffee"],
"dislikes": ["whiskey", "large", "junk food"],
"personality": "dominant",
"description": "Your intense landlady and owner of the local modeling agency.",
"house_reactions": [
"Barbara purses her lips. 'Hmph. I expected... more.",
"She crosses her arms. 'Well, at least you’re keeping it clean.'",
"Barbara nods slightly. 'It has a certain charm. Not bad.",
"She smiles approvingly. 'Now this? This is a home. Well done."
],
"greetsoft": "That’s better. Respect goes a long way.",
"greetingdom": "Don’t get ahead of yourself. I’m the one in charge here.",
"drinkreply": "get me a coffee girl, make it snappy!",
"drinkresponse":[
["Thanks girl, at least you're useful in some ways.", 2],
["Are you hard of hearing girl? This isn't what I asked for!", -2],
["Are you hard of hearing girl? This isn't what I asked for!", -2],
["Are you hard of hearing girl? This isn't what I asked for!", -2],
["Are you hard of hearing girl? This isn't what I asked for!", -2],
["Water? Hmph. I suppose hydration is important.", 0]
]
},
"jeff": {
"affection": $Jeff,
"gender":"male",
image: 'img/characters/jeffrey-chat.jpg',
"likes": ["beer", "movies", "large"],
"dislikes": ["fit", "loud music"],
"personality": "switch",
"description": "An older man of few words stands before you with a nervous grin.",
"house_reactions": [
"Jeff scratches the back of his head. 'Uh... yeah. It’s a place.'",
"He nods slightly. 'Feels like someone actually lives here.'",
"Jeff chuckles. 'You got good taste. Feels homey.'",
"He grins. 'Man, this is nice. You got style, kid.'"
],
"greetsoft": "Oh, uh, hey. No need to be so shy, I guess.",
"greetingdom": "Whoa, no need to be so intense, buddy.",
"drinkreply": "I<punc>d kill for a beer!",
"drinkresponse":[
["Coffee? Eh, not really my thing.", 0],
["Tea? Not bad, I guess.", 0],
["Whiskey? Bit too strong for me.", -1],
["Wine? Fancy stuff. Not really my style.", 0],
["I needed this. Thanks!", 2],
["Water? Probably a smart move.", 1]
]
},
"kyle": {
"affection": $Kyle,
"gender":"male",
image: 'img/characters/kyle-chat.jpg',
"likes": ["beer", "action", "large"],
"dislikes": ["fit", "loud music"],
"personality": "dominant",
"description": "A tall, broad-shouldered man with a confident smirk. He's dressed in casual clothes and not in the shopkeeper’s apron you're so used to seeing.",
"house_reactions": [
"Kyle smirks. 'Didn’t take you for someone who kept things so... basic.'",
"He runs a hand along a nearby surface. 'Simple, but it works.'",
"I like it. It<punc>s got a nice vibe to it.'",
"Damn, this place is slick. You got good taste!'"
],
"greetingsoft": ["Now that<punc>s the kind of greeting I can appreciate",1],
"greetingdom": ["Hey, easy there, tough guy. No need to posture.",-1],
"drinkreply": "I could go for a beer right about now!",
"drinkresponse": [
["Coffee? ho bother, dont you want to have a little fun $firstname.", -1],
["Now this is a drink. A little too fancy though.", 1],
["Whiskey dick is a real problem for me. Pass!", -1],
["Im not here to talk about my feeling darling.", -1],
["Thanks, $firstname! It’s nice and cold too!", 2],
["This isn’t what I asked for, $firstname.", -1]
]
}
}>>
//outfit display
<<do>>
<<script>>
$(document).ready(function() {
$('#phone').remove();
$('#journal2').remove();
// Add the Journal UI to the body
$("body").append(`
<div id="journal">
<div id="journal2">
<div id="journal-content">
<div id="journal-header">
<h3>Journal</h3>
<button id="toggle-journal">⮜</button>
</div>
<div id="image-journal">
<img class="head-img" src="img/logo1.png" alt="Character">
<img class="upper-img" src="img/logo2.png" alt="Character">
<img class="lower-img" src="img/logo3.png" alt="Character">
</div>
<div id="journal-info">
<p><strong>Name:</strong> <span id="player-name">${State.variables.firstname}</span></p>
</div>
</div>
</div>
${State.variables.electronics[0]["owned"]
? '<button class="togglerbutton active" id="togglerbutton">Cellphone</button>'
: ''}
</div>
<div class="phone hidden" id="phone">
<div class="phone-header">
Game Phone
<button class=" active topphone" id="phonetoggle" >X</button>
</div>
<div class="phone-body">
<div id="phonebook" class="app-section active">
<h2>Phonebook</h2>
<ul class="contact-list" id="contact-list"></ul>
</div>
<div id="chat" class="app-section">
<h2>Chat with <span id="chat-contact-name"></span></h2>
<div class="chat-log">
<div>System: Welcome to the chat!</div>
</div>
<div class="chat-actions">
<button class="builder-button chat-action-button">Chat</button>
<button class="builder-button chat-action-button">Invite Over</button>
<button class="builder-button chat-action-button">Invite Out</button>
</div>
</div>
<div id="pennbuddy" class="app-section">
<h2>Fuck Buddy</h2>
<button class="builder-button" id="random-friend-button">Look for random friend</button>
</div>
</div>
<div class="phone-nav">
<button class="nav-button active" data-target="phonebook">Phonebook</button>
<button class="nav-button" data-target="chat">Chat</button>
<button class="nav-button" data-target="pennbuddy">Fuck Buddy</button>
</div>
</div>
`);
// Toggle Journal
$("#journal2").click(function() {
$(this).toggleClass("collapsed");
});
$("#togglerbutton").click(function() {
$("#phone").toggleClass("hidden");
});
// Navigation
$(".nav-button").on("click", function() {
$(".nav-button").removeClass("active");
$(".app-section").removeClass("active");
$(this).addClass("active");
$("#" + $(this).data("target")).addClass("active");
});
// Fetch relationships data
let relationships = State?.variables?.relationships || {}; // Ensure State exists to prevent errors
let $phonebookList = $("#contact-list");
$('#contact-list' ).empty();
$.each(relationships, function(name, data) {
if (data.affection > 0) {
let contactItem = `
<li class="contact-item">
<div class="contact-icon">
<img src="${data.image}" alt="${name}" class="contact-image">
</div>
<div class="contact-info">
<span class="contact-name">${name}</span>
</div>
</li>
`;
$phonebookList.append(contactItem);
}
});
// Contact Click Event (Delegated)
$(document).on("click", ".contact-item", function() {
let contactName = $(this).find(".contact-name").text();
$("#chat-contact-name").text(contactName);
$(".nav-button[data-target='chat']").click();
});
});
<</script>>
<</do>>
//MALL RANDOM
<<set $seducemalllist2 = [
{
name: "Handsome",
initial:[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You walk around the mall, your heels tip taping on the polished floor. You<punc>ve been craving a man<punc>s touch all day and are determined to find someone to seduce. As you pass by Odai Body Studio, you spot a handsome man exiting the shop, his hair still damp from a recent shower."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man is tall and muscular, with chiseled features and piercing blue eyes. He catches your gaze and smiles, revealing a perfect set of white teeth. You feel a tingle between your thighs and decide to make your move."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Hey there, handsome. You look like you<punc>re in need of some stress relief after that massage."
},
{
"character": "Node 1",
"gender": "na",
"type": "choice",
"text": "Does he bite",
"choices": [
{
"text": "Lets see",
"statRequirements": [],
"statChanges": {},
"result": []
}
]
}
] ,
responses: [
[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man looks you up and down appreciatively, his eyes lingering on your ample cleavage. He takes a step closer, his cologne filling your nostrils with a musky, masculine scent."
},
{
"character": "stranger1",
"gender": "male",
"type": "speech",
"text": "Well, I might need a little more attention in a few areas. Think you<punc>re up for the challenge, sexy?"
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You lick your lips, imagining all the dirty things you could do to his body. Your pussy is already getting wet."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Oh, I<punc>m always up for a challenge, especially with a hot piece of man-meat like you. Why don<punc>t we head somewhere more private and you can show me just how stressed you really are."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man grins wickedly and takes your hand, leading you towards the exit of the mall. You follow eagerly, your heart pounding with anticipation. This is going to be fun."
},
{
character: "stranger1", gender: "male", type: "choice",
text: "Lead him home?",
choices: [
{
text: "go home with him",
type:"transfer",
result :"RandomSex",
statChanges: { money: 50 },
statRequirements: [ { stat: "deviancy", threshold: 30 }]
}
]
}
],
[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man looks around nervously before leaning in close. His voice drops to a whisper."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "Well, I just got out of a massage session at Odai and the masseuse tried to give me a happy ending. But I<punc>m not that kind of guy, you know? I<punc>m married and faithful to my wife."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You feel a twinge of disappointment, but also a bit of admiration for his integrity. You put a hand on his arm, your nails lightly scratching his skin."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "I understand completely. It takes a strong man to resist temptation."
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "Oh bother"
}
]
]
},
{
name: "Nerd",
initial:[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You walk around the mall, your high heels clicking on the polished floor. You<punc>ve been craving a man<punc>s touch all day and are determined to find someone to seduce. As you pass by Electronics for them, you spot a nerdy man exiting the shop, his greasy hair accentuating his thick glasses."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "Good morrow, fair maiden! Thou art a vision of beauty and grace! Pray tell, what brings thee to this fine establishment on this fair day?"
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You raise an eyebrow, surprised by his old-fashioned language. But you decide to play along, intrigued by the nerdy man<punc>s quirks."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Well, kind sir, I was simply browsing the mall in search of...stimulation. But perhaps thou hast something more...enticing to offer?"
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man<punc>s eyes widen and he stammers slightly."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "I...I<punc>m afraid thou hast mistaken me for someone else, good lady. I am merely a humble scholar, seeking knowledge and enlightenment. Not one to engage in...such base activities."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You feel a flicker of disappointment, but also a sense of amusement. You decide to push a little further, curious to see how far this man will take his act."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Oh, I see. Well, perhaps thou couldst enlighten me on the nature of...physical pleasure? I am always eager to expand my mind and...horizons."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man<punc>s face turns bright red and he stammers even more."
},
{
"character": "Node 1",
"gender": "na",
"type": "choice",
"text": "Does he bite",
"choices": [
{
"text": "Lets see",
"statRequirements": [],
"statChanges": {},
"result": []
}
]
}
],
responses: [
[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You step closer to him, your breasts heaving with each breath. You place a hand on his chest, feeling his heart pounding beneath your palm."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Thou art a man of great virtue, good sir. But surely even a man of science and reason must have...needs. And I would be more than happy to...assist thee in fulfilling those needs."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man swallows hard, his eyes flickering down to your cleavage and then back up to your face. You can see the conflict in his eyes, the battle between his principles and his desires."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "I...I suppose there is...some merit to thy argument, good lady. Perhaps it would be wise to...explore these matters further. But we must be...discreet."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You grin wickedly, feeling a sense of triumph. You<punc>ve convinced the nerdy man to indulge in his desires, and now you<punc>re going to make him feel pleasure like he<punc>s never known before."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "I couldn<punc>t agree more, good sir. Follow me, and let us retire to a more...intimate setting. I promise thou shalt not regret this decision."
},
{
character: "stranger1", gender: "male", type: "choice",
text: "Lead him home?",
choices: [
{
text: "go home with him",
type:"transfer",
result :"RandomSex",
statChanges: { money: 50 },
statRequirements: [ { stat: "deviancy", threshold: 30 }]
}
]
}
],
[
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "I...I<punc>m afraid that is a subject beyond my expertise, good lady. I am a man of science and reason, not one to indulge in...such carnal desires."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You bite your lip, feeling a sudden surge of arousal. There<punc>s something about this nerdy man<punc>s purity and innocence that makes you want to corrupt him."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Thou art mistaken, good sir. I believe thou hast much to teach me...about the pleasures of the flesh. Why don<punc>t we retire to a more...private location and discuss this further?"
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man<punc>s eyes widen even further and he takes a step back, looking flustered."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "I...I<punc>m afraid I must decline, good lady. While I find thee most...enticing, I am a man of principle and honor."
}
]
]
},
{
name: "BBC",
initial:[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You strut around the mall looking for an interesting encounter. You come accross a large black gentleman."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man is absolutely ripped, his abs tight and defined, his biceps bulging beneath his skin-tight tank top. He notices you staring and smirks, his eyes raking over your body."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "Damn, girl. You<punc>re looking mighty fine."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Mmm, you know it. You<punc>re not to bad looking yourself."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You step closer to him, your breasts nearly brushing against his chest. You reach out and boldly grab his crotch, feeling his cock hardening in his shorts."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Looks like you<punc>re packing some serious heat down here, big boy. I think I<punc>d like to get to know this beast a little better."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man gasps as you grope him, his hips instinctively bucking into your touch. But then he quickly composes himself, trying to maintain his macho demeanor."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "Oh, you want this, do you? Well, you<punc>re going to have to work for it, girl. I don<punc>t give it up easy."
},
{
"character": "Node 1",
"gender": "na",
"type": "choice",
"text": "What do you do",
"choices": [
{
"text": "Dominate him 50 deviancy",
"statRequirements": [
{
"stat": "deviancy",
"threshold": 50
}
],
"statChanges": {},
"result": [
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You laugh, your hand still firmly grasping his throbbing erection through his shorts. You can feel it twitching in your palm, betraying his desire."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Mmm, I like a challenge. And I can tell just how badly you want me. Your dick is practically begging for my attention."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You start to rub him harder, your fingers tracing the outline of his cock. The man<punc>s breathing grows heavier, beads of sweat forming on his brow."
},
{
"character": "man",
"gender": "male",
"type": "thought",
"text": "Fuck, this chick is relentless. She<punc>s going to make me bust in my pants if she keeps this up."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You can sense his impending orgasm and double your efforts, squeezing and stroking him through his shorts. The man<punc>s hips jerk erratically as he tries to hold back, but it<punc>s no use."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "With a strangled groan, he cums hard, his hot seed soaking through his shorts. You keep rubbing him through his climax, milking every last drop from his cock."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Mmm, that<punc>s it baby. Give it all to me. I can feel how much you wanted that."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man pants heavily, his face flushed with embarrassment and pleasure. He looks down at you, a mix of shame and desire in his eyes."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "Shit, girl. That was... intense. I didn<punc>t think I<punc>d cum just from you touching me like that."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Oh, you have no idea what I can do with my hands... or my mouth. But that<punc>s a story for another day."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You give him a wicked grin."
},
{
"character": "Node 2",
"gender": "na",
"type": "choice",
"text": "Hes practically helpless",
"choices": [
{
"text": "Rob him ",
"statRequirements": [],
"statChanges": {
"money": 200
},
"result": [
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You smirk to yourself, already plotting your next move. With a quick glance around to make sure no one is watching, you reach into his pocket."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You press your body against his. Your hand slides into his pocket, deftly removing his wallet. The man doesn<punc>t even flinch, still engrossed in his orgasm."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You slip the wallet into your purse, a sense of triumph coursing through you. You love the thrill of the steal!"
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "sucker"
}
]
},
{
"text": "Leave",
"statRequirements": [],
"statChanges": {},
"result": [
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You walk away"
}
]
}
]
}
]
},
{
"text": "Seduce him",
"statRequirements": [],
"statChanges": {},
"result": []
}
]
}
],
responses: [
[
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You take a step closer, placing a hand on his chest. You can feel his heart pounding beneath your touch."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Oh, I think I can handle you. And.. I bet you know how to handle a woman<punc>s body. Don<punc>t you?"
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man<punc>s breath hitches as you trace circles on his chest with your fingertip."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "Well, I don<punc>t like to stop until we<punc>re both satisfied."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You lick your lips, feeling a surge of desire between your thighs."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "That<punc>s exactly what I<punc>m hoping for. Now, let<punc>s get out of here and start our workout."
},
{
character: "stranger1", gender: "male", type: "choice",
text: "Lead him home?",
choices: [
{
text: "go home with him",
type:"transfer",
result :"RandomSex",
statChanges: { money: 50 },
statRequirements: [ { stat: "deviancy", threshold: 30 }]
}
]
}
],
[
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "You look like you could use a good stretch after that workout. How about we go back to my place and I can help you with that?"
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "The man looks you up and down, a small smile playing on his lips. But then he shakes his head."
},
{
"character": "man",
"gender": "male",
"type": "speech",
"text": "I<punc>m sorry, ma<punc>am. You<punc>re a beautiful woman, but I<punc>m not interested. I<punc>m gay."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "Your cheeks flush with embarrassment, but you quickly recover, putting on a confident smile."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Oh, I see. No problem, handsome. I respect that. Have a great day."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You turn and walk away, feeling a bit bummed..."
}
]
]
}
] >>
<div class="box header">
<h1>$firstname $lastname</h1>
<h2>"$nickname"</h2>
<span class="star">✦</span>
<ul class="facts">
<li>Female</li>
<li>23</li>
<li>Human</li>
</ul>
</div>
<div class="box">
<h3>Appearance</h3>
<i>You are $firstname, a young lady trying to make it in a bustling city </i>
</div>
<!-- BOX WITH GROUP OF STATS -->
<div class="box">
<!-- STAT GROUP TITLE -->
<h3>Personality</h3>
<div class="stat-group">
<div class="stat">
<div class="stat-labels">
<span>Kind 70%</span>
<span>✦</span>
<span>Cruel 30%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
<div class="stat">
<div class="stat-labels">
<span>Shy 70%</span>
<span>✦</span>
<span>Bold 30%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
</div>
</div>
<div class="box">
<h3>Skills</h3>
<div class="stat-group">
<div class="stat">
<div class="stat-labels">
<span>Modeling</span>
<span>✦</span>
<span>70%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
<div class="stat">
<div class="stat-labels">
<span>Dancing</span>
<span>✦</span>
<span>70%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
</div>
</div>
<!-- IMPORTAN! INCLUDE THE CODE BELOW ON ALL STAT PAGES TO MAKE SURE THE LINK RETURNS THE USER TO THE LAST PASSAGE. IF YOU USE A NORMAL RETURN LINK IT WILL SIMPLY LOOP -->
<span style="display: block; text-align: center;">
<<link "« Return to game" $return>><</link>>
</span><!-- POPULATES STORY LINKS IN THE HEADER MENU -->
<li> <<link "Stats" "stat page 1">><</link>> </li>
<div class="box header">
<h1>$firstname $lastname</h1>
<h2>"$nickname"</h2>
<span class="star">✦</span>
<ul class="facts">
<li>Text</li>
<li>Text</li>
<li>Text</li>
</ul>
</div>
<!-- TEXT BOX BUT WITHOUT BACKGROUND -->
<div class="box blank">
<h3>Appearance</h3>
<i>$firstname is tall and of average size with golden blond hair and pale skin.</i>
</div>
<!-- STAT BOX BUT WITHOUT BACKGROUND -->
<div class="box blank">
<!-- STAT GROUP TITLE -->
<h3>Personality</h3>
<div class="stat-group">
<div class="stat">
<div class="stat-labels">
<span>Kind 70%</span>
<span>✦</span>
<span>Cruel 30%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
<div class="stat">
<div class="stat-labels">
<span>Shy 70%</span>
<span>✦</span>
<span>Bold 30%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
</div>
</div>
<div class="box blank">
<h3>Skills</h3>
<div class="stat-group">
<div class="stat">
<div class="stat-labels">
<span>Embroidery</span>
<span>✦</span>
<span>70%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
<div class="stat">
<div class="stat-labels">
<span>Dancing</span>
<span>✦</span>
<span>70%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
</div>
</div>
<!-- IMPORTAN! INCLUDE THE CODE BELOW ON ALL STAT PAGES TO MAKE SURE THE LINK RETURNS THE USER TO THE LAST PASSAGE. IF YOU USE A NORMAL RETURN LINK IT WILL SIMPLY LOOP -->
<span style="display: block; text-align: center;"><<link "« Return to game" $return>><</link>></span><div class="main">
<nav>
<<link "Resume Game">><<run Save.autosave.load()>><</link>>
<<link "Load Game">><<run UI.saves();>><</link>>
</nav>
<div class="story-banner">
<div class="content">
<!-- STORY TITLE -->
<h1 class="story-title">OF Girl</h1>
<!-- ICON -->
<img style="margin:0 auto;" src="img/logo.png" width="200px"/>
<span>✦</span>
<!-- STORY AUTHOR -->
<h3 class="story-author">By <a href="www.patreon.com/SageWorks"></a>SageWorks</h3>
</div>
</div>
<nav>
<<link "New Game" "Age Verification">><</link>>
<<link "Settings">><<run UI.settings();>><</link>>
</nav>
</div>
!Heading 1
!!Heading 2
!!!Heading 3
Normal text. Normal text. Normal text. Normal text. Normal text. //emphasised text//. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. ''strong text''. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. __underlined text__ Normal text. Normal text. Normal text. Normal text. Normal text.
----
!!!Unordered List:
* List item 1
* List item 2
!!!Links
[[More Styles]]
[[More Styles]]
<<button "Button" "More Styles">><</button>>
<<run setup.refreshStats()>>
<!-- POPULATE THE SOCIAL MEDIA LINKS -->
<a href="https://patreon.com/SageWorks" target="_blank"><img style="width: 1em;
height: 1em;" src="img/brands/patreon.svg"></a>
<a href="https://sageworks.itch.io" target="_blank"><img style="width: 1.2em;
height: 1.2em;" src="img/brands/itch-io.svg"></a>
<<run setup.refreshStats()>>
<!-- TITLE ON THE TOP OF THE PAGE IS POPULATED HERE -->
<!-- STORY TITLE -->
<div class="datetime">
<span id="dayofweek"><<do>><<print $weekday>><</do>></span>
<span id="timeofday"><<do>><<print $time>><</do>></span>
</div>
<!-- ICON -->
<img class="stat" src="img/solid/clock.svg">
<!-- STORY SUBTITLE -->
<div class="stat-container">
<div class="stat">
<div class="stat-value" id="money-value"><<do>><<print Math.trunc($money)>><</do>></div>
<div><img src="img/solid/dollar-sign.svg"></div>
</div>
<div class="stat">
<div class="stat-value" id="hunger-value"><<do>><<print $hunger>><</do>></div>
<div><img src="img/solid/drumstick-bite.svg"></div>
</div>
<div class="stat">
<div class="stat-value" id="energy-value"><<do>><<print $energy>><</do>></div>
<div><img src="img/solid/bolt.svg"></div>
</div>
<div class="stat">
<div class="stat-value" id="fitness-value"><<do>><<print Math.round($fitness)*10/10>><</do>></div>
<div><img src="img/solid/dumbbell.svg"></div>
</div>
<div class="stat">
<div class="stat-value" id="deviancy-value"><<do>><<print $deviancy>><</do>></div>
<div class="staticon">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="26px" height="26px" viewBox="0 0 36 36" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><circle fill="#AA8DD8" cx="18" cy="18" r="18"/><path fill="#AA8DD8" d="M10 4C7.42 4 4.369 1.534 3.414.586A1.998 1.998 0 0 0 1.235.153A1.998 1.998 0 0 0 0 2c0 3.459 1.672 10 8 10a2 2 0 0 0 1.789-1.106l2-4A1.999 1.999 0 0 0 10 4zM34.766.153a1.996 1.996 0 0 0-2.18.434C31.7 1.472 28.589 4 26 4a1.999 1.999 0 0 0-1.789 2.895l2 4A2 2 0 0 0 28 12c6.328 0 8-6.541 8-10c0-.809-.487-1.538-1.234-1.847z"/><path fill="#553986" d="M27.335 25.629a.501.501 0 0 0-.635-.029c-.039.029-3.922 2.9-8.7 2.9c-4.766 0-8.662-2.871-8.7-2.9a.5.5 0 0 0-.729.657C8.7 26.472 11.788 31.5 18 31.5s9.301-5.028 9.429-5.243a.499.499 0 0 0-.094-.628zm-11.628-7.336C12.452 15.038 7.221 15 7 15a1 1 0 0 0-.001 2c.029 0 1.925.022 3.983.737c-.593.64-.982 1.634-.982 2.763c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-.174-.019-.34-.037-.507c.013 0 .025.007.037.007a.999.999 0 0 0 .707-1.707zM29 15c-.221 0-5.451.038-8.707 3.293A.999.999 0 0 0 21 20c.013 0 .024-.007.036-.007c-.016.167-.036.333-.036.507c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-1.129-.389-2.123-.982-2.763A13.928 13.928 0 0 1 29.002 17A1 1 0 0 0 29 15z"/></svg></div>
</div>
<div class="stat">
<div class="stat-value" id="beauty-value"><<do>><<print $beauty>><</do>></div>
<div>
<svg xmlns="http://www.w3.org/2000/svg xmlns:xlink="http://www.w3.org/1999/xlink" height="26px" width="26px" version="1.1" id="Layer_1" viewBox="0 0 511.999 511.999" xml:space="preserve">
<path style="fill:#EC589B;" d="M503.383,270.65c-38.314,35.12-82.648,62.612-130.6,81.304 c-27.032,10.535-55.213,18.278-84.118,23.011c-10.822,1.769-21.736,2.665-32.662,2.665c-10.925,0-21.839-0.896-32.662-2.665 c-40.095-6.571-78.811-18.921-114.976-36.487C72.211,320.9,38.573,298.119,8.634,270.661c-0.011-0.011-0.023-0.011-0.023-0.011 s0,0,0.011-0.012l114.723-111.139c28.71-27.802,72.366-33.225,106.992-13.281l25.665,14.774l25.654-14.774 c34.638-19.944,78.294-14.521,106.992,13.281L503.383,270.65z"/>
<path style="fill:#D3468D;" d="M135.534,255.948c0,0,85.456,6.29,117.339-25.593C252.873,230.355,165.732,225.75,135.534,255.948z"/>
<path style="fill:#EFDFDE;" d="M329.01,255.948l-27.22-14.328c-28.662-15.088-62.919-15.088-91.581,0l-27.22,14.328l27.22,14.328 c28.662,15.088,62.919,15.088,91.581,0L329.01,255.948z"/>
<g>
<path style="fill:#D3468D;" d="M372.783,351.953c-27.032,10.535-55.213,18.278-84.118,23.011 c-10.822,1.769-21.736,2.665-32.662,2.665c-10.925,0-21.839-0.896-32.662-2.665c-40.095-6.571-78.811-18.921-114.976-36.487 C72.211,320.9,38.573,298.119,8.634,270.661c2.401,1.379,168.466,96.124,364.091,81.292H372.783z"/>
<path style="fill:#D3468D;" d="M256.003,160.993L256.003,160.993c-1.624,11.167-12.396,18.53-23.417,16.103 c-21.117-4.649-39.787-22.643-75.511,2.255c-56.42,39.325-147.292,90.746-148.452,91.286l114.723-111.139 c28.71-27.802,72.366-33.225,106.992-13.281L256.003,160.993z"/>
</g>
<path style="fill:#F67BB8;" d="M256.004,160.993L256.004,160.993c1.624,11.167,12.396,18.53,23.417,16.103 c21.117-4.649,39.787-22.643,75.511,2.255c56.42,39.325,147.292,90.746,148.452,91.286L388.661,159.498 c-28.71-27.802-72.366-33.225-106.992-13.281L256.004,160.993z"/>
<path d="M111.298,255.948c0,4.758,3.857,8.616,8.616,8.616h60.946l25.335,13.337c15.592,8.208,32.698,12.312,49.803,12.312 c17.106,0,34.211-4.105,49.805-12.312l25.335-13.337h60.946c4.76,0,8.616-3.858,8.616-8.616s-3.857-8.616-8.616-8.616H331.14 l-25.335-13.337c-31.186-16.417-68.424-16.416-99.607,0l-25.335,13.337h-60.946C115.155,247.332,111.298,251.19,111.298,255.948z M214.222,249.243c26.159-13.77,57.394-13.771,83.554,0l12.736,6.705l-12.736,6.704c-26.16,13.77-57.393,13.771-83.554,0 l-12.736-6.704L214.222,249.243z"/>
<path d="M428.006,315.669c-43.56,25.535-90.911,42.624-140.738,50.793c-20.749,3.401-41.788,3.401-62.537,0 c-75.736-12.416-145.895-45.567-203.481-96.051l108.096-104.718c8.916-8.637,19.405-14.964,31.175-18.805 c4.524-1.476,6.994-6.34,5.518-10.865c-1.477-4.523-6.334-6.995-10.865-5.518c-14.281,4.661-27.005,12.335-37.819,22.81 L2.62,264.466c-1.704,1.652-2.653,3.934-2.619,6.307c0.032,2.374,1.043,4.629,2.793,6.232 c61.303,56.194,137.084,93.009,219.152,106.462c11.299,1.853,22.677,2.779,34.055,2.779c11.378,0,22.757-0.926,34.056-2.779 c51.925-8.512,101.272-26.321,146.666-52.932c4.105-2.407,5.482-7.686,3.077-11.791C437.389,314.64,432.11,313.263,428.006,315.669z "/>
<path d="M509.379,264.466L394.644,153.315c-31.297-30.317-79.526-36.306-117.286-14.566L256,151.046l-21.359-12.297 c-12.159-7.001-25.386-11.247-39.313-12.621c-4.731-0.468-8.954,2.994-9.421,7.729c-0.466,4.736,2.993,8.953,7.729,9.421 c11.477,1.132,22.381,4.633,32.407,10.405l25.658,14.773c2.661,1.531,5.937,1.533,8.598,0l25.657-14.773 c31.131-17.924,70.893-12.987,96.697,12.009l108.095,104.717c-12.876,11.279-26.527,21.805-40.679,31.363 c-3.944,2.663-4.981,8.019-2.32,11.963c1.665,2.465,4.382,3.795,7.149,3.795c1.659,0,3.335-0.478,4.814-1.476 c17.38-11.737,34.032-24.875,49.494-39.048c1.749-1.604,2.76-3.859,2.793-6.232S511.084,266.118,509.379,264.466z"/>
</svg>
</div>
</div>
</div><!-- STORY BANNER/LOGO POPULATED HERE -->
<div class="story-banner">
<div class="content">
<!-- STORY TITLE -->
<h1 class="story-title">STORY <strong>OF STAR</strong></h1>
<!-- ICON -->
<img class="lgo" src="img/logo.png" width="240px"/>
<!-- STORY SUBTITLE -->
<h2 class="story-subtitle">Become sombody</h2>
<span>✦</span>
<!-- STORY AUTHOR -->
<h3 class="story-author">By <a href="#"></a>Sageworks
</h3>
</div>
</div>!!! Checkbox:
<<checkbox "$checkboxVar1" false true autocheck>> Checkbox option 1
<<checkbox "$checkboxVar2" false true autocheck>> Checkbox option 2
<<checkbox "$checkboxVar3" false true autocheck>> Checkbox option 3
!!! Cycle:
<<cycle "$cycleVar" autoselect>>
<<option "Option 1">>
<<option "Option 2">>
<<option "Option 3">>
<<option "Option 4">>
<<option "Option 5">>
<</cycle>>
!!! Listbox:
<<listbox "$listboxVar" autoselect>>
<<option "Option 1">>
<<option "Option 2">>
<<option "Option 3">>
<<option "Option 4">>
<<option "Option 5">>
<</listbox>>
!!! Radiobutton:
<<radiobutton "$radiobuttonVar" "option 1" autocheck>> Option 1
<<radiobutton "$radiobuttonVar" "option 2" autocheck>> Option 2
<<radiobutton "$radiobuttonVar" "option 3" autocheck>> Option 3
!!! Textarea:
<<textarea "$textareaVar" "Type text here..">>
!!! Textbox:
<<textbox "$textboxVar" "Type answer here">>
<<button "Autosave" "Autosave">><</button>><<notify>>Autosave complete!<</notify>>
This passage autosaves, and the next time the game opens the player will be able to resume from here. <!-- THIS PASSAGE IS NOT TAGGED WITH STYLE PASSAGE BUT RATHER HAS A FEW ELEMENTS WRAPPED IN THAT CLASS TO ONLY STYLE CERTAIN ELEMENTS -->
<!-- REMOVING CLASS BOX HEADER FROM TITLE TO GET DIFFERENT HEADER -->
<h1>Title</h1>
<h2>Subtitle</h2>
<!-- ADDING STAT PASSAGE CLASS TO UL LIST TO KEEP STYLING FOR THIS ELEMENT -->
<div class="stat-passage">
<ul class="facts">
<li>Female</li>
<li>26</li>
<li>Human</li>
</ul>
</div>
<br><br>
<div class="box blank">
<h2>Appearance</h2>
<i>$firstname is tall and of average size with golden blond hair and pale skin.</i>
</div>
<!-- ADDING STAT PASSAGE CLASS TO KEEP STYLING S-->
<div class="stat-passage">
<div class="box blank">
<!-- STAT GROUP TITLE -->
<h3>Personality</h3>
<div class="stat-group">
<div class="stat">
<div class="stat-labels">
<span>Kind 70%</span>
<span>✦</span>
<span>Cruel 30%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
<div class="stat">
<div class="stat-labels">
<span>Shy 70%</span>
<span>✦</span>
<span>Bold 30%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
</div>
</div>
<div class="box blank">
<h3>Skills</h3>
<div class="stat-group">
<div class="stat">
<div class="stat-labels">
<span>Embroidery</span>
<span>✦</span>
<span>70%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
<div class="stat">
<div class="stat-labels">
<span>Dancing</span>
<span>✦</span>
<span>70%</span>
</div>
<div class="stat-bar-container">
<div class="stat-bar"></div>
</div>
</div>
</div>
</div>
</div>
<!-- IMPORTAN! INCLUDE THE CODE BELOW ON ALL STAT PAGES TO MAKE SURE THE LINK RETURNS THE USER TO THE LAST PASSAGE. IF YOU USE A NORMAL RETURN LINK IT WILL SIMPLY LOOP -->
<span style="display: block; text-align: center;"><<link "« Return to game" $return>><</link>></span><div class='hi'>
<div class="left-section">
<div id='chdiv'>
<img id="devimg" height="200px" width="200px" src="img/Sage.jpeg">
</div>
</div>
<div class="right-section">
<div class="thought-bubble">Welcome to the first <a href="www.patreon.com/SageWorks" target="_blank">SageWorks</a> release, Story of star. Thanks for playing</div>
<div class="thought-bubble">I would truly appreciate your <a href="www.patreon.com/SageWorks" target="_blank">support</a> if the game exites you as its still early days at this point</div>
<div class="thought-bubble">Please confirm whether you are over 18 years of age or not</div>
<div class="thought-bubble">
<<button "Yes" "Intro">><</button>><<button "No" "NO">><</button>>
</div>
</div>
</div>!My name is <<textbox "$firstname" "Emily">>
!Last name: <<textbox "$lastname" "Rodgers">>
<img src="img/MC-chubby-selfie.jpg" width="300px" alt="image of MC . slightly overweight, brunette" style="margin:0 auto;"/>
<<set $startconversation = [
{ character: "MC", gender: "female", type: "thought", text: "Ive been on my own for a while now. Its been tough." },
{ character: "MC", gender: "female", type: "thought", text: "6 months ago, I completed my degree in ancient egyptian." },
{ character: "MC", gender: "female", type: "thought", text: "Couldnt find a job, now im stuck in this shithole." },
{ character: "MC", gender: "female", type: "thought", text: "I owe $1,000,000 in student loans to Hustlers University , So I cant quit." },
{ character: "jim", gender: "male", type: "speech", text: "Alright Star, its time for you to clock out ,Candy has the night shift" },
{ character: "MC", gender: "female", type: "speech", text: "Aww no. Jim I really need some overtime work" },
{ character: "jim", gender: "male", type: "speech", text: "Sorry Star, Candy just has a way with the customers" },
{ character: "MC", gender: "feale", type: "narrative", text: "You notice something <animate>growing</animate> in Jims pants, as he thinks about Candy" },
{ character: "image", gender: "fw", type: "image", text: "img/characters/jim-erectionc.jpg" },
{ character: "MC", gender: "female", type: "thought", text: "He always gets rock hard when he talks about Candy." },
{ character: "MC", gender: "female", type: "speech", text: "Alright, I'm off then" },
]>>
<div id="schat-container"></div>
<<script>>
$(document).ready(function() {
$("#schat-container").html(window.renderConversation(State.variables.startconversation));
});
<</script>>
<<button "End your shift" "End shift">><</button>><div class='hi'>
<div class="left-section">
<div id='chdiv'>
<img id="devimg" height="200px" width="200px" src="img/Titanoverse.jpeg">
</div>
</div>
<div class="right-section">
<div class="thought-bubble">You cannot play. Please try something else.</div>
<div class="thought-bubble">please try <a href = "https://tetris.com/play-tetris">these</a> instead</div>
</div>
</div><<switch $jim>>
<<case 0>>
<<set $endshiftconversation = [
{ character: "MC", gender: "female", type: "thought", text: "I need to ask Jim for more hours" },{ character: "MC", gender: "female", type: "thought", text: "Its not fair that Emma gets all the tips and now, all the work time" },{ character: "MC", gender: "female", type: "thought", text: "I could also say hi to Kofi, hes always got my back" },
]>>
<<script>>
$(document).ready(function() {
$("#endshiftchat-container").html(window.renderConversation(State.variables.endshiftconversation));
});
<</script>>
<<case 1>>
<<set $endshiftconversation = [
{ character: "MC", gender: "female", type: "thought", text: "Candy and Jim Huh? What a slut" },{ character: "MC", gender: "female", type: "thought", text: "Im totally over this shit, time to go home!" },
]>>
<<script>>
$(document).ready(function() {
$("#endshiftchat-container").html(window.renderConversation(State.variables.endshiftconversation));
});
<</script>>
<</switch>>
<div id="endshiftchat-container"></div>
[[Restaurant Kitchen]]
[[Jims Office]]
<<if $kofi >= 1 and $jim>=1>>
<<button "Restaurant" "Del Bistro Restaurant">><</button>>
<</if>><<run setup.refreshStats()>>
<<link "Open Wardrobe" "WardrobeMenu">><</link>>
[[Sleep]]
<<button "Go To Living Room" "Apartment">><</button>><<nobr>>
<<if $landlordCD===4>>
<<goto "landlord">>
<<else>>
<</if>>
<<if $docCD===0 and $usnum>0>>
<<goto "doccollect">>
<<else>>
<</if>>
<</nobr>>
<<linkreplace "Think about life">>
<<nobr>>
<<set $FitDesc = [
{ character: "Candy", gender: "feme", type: "narrative", text: "$firstname thinks about the park..." },
{ character: "MC", gender: "female", type: "thought", text: "Going to the park will help me improve my <animate>fitness</animate>" },
{ character: "MC", gender: "female", type: "thought", text: "Its near my house and I can go before and after work" }
]>>
<<set $DevDesc = [
{ character: "Candy", gender: "feme", type: "narrative", text: "$firstname thinks about her interactions..." },
{ character: "MC", gender: "female", type: "thought", text: "Sometimes during the day , guys flirt with me. I guess I could be a little more open totheir advances. " }
]>>
<<set $conversation = [
{ character: "MC", gender: "female", type: "thought", text: "This is my apartment. It's nothing special. A girls gotta start somewhere." },
{ character: "MC", gender: "female", type: "thought", text: "Rent's $400 a month, Mr and Mrs Thompson often collect on mondays." },
{ character: "MC", gender: "female", type: "thought", text: "Slutty Candy is taking all my money away! Pretty girls like her always get whatever they want!" },
{ character: "MC", gender: "female", type: "thought", text: "I need to figure out a way of becoming more attractive." },
{ character: "Narrator", gender: "na", type: "choice", text: "I could?",
choices: [
{ text: "Exercise", result: $FitDesc},
{ text: "Clothing", result: $FitDesc},
{ text: "Hunger", result: $FitDesc},
{ text: "Seduction", result: $DevDesc }
]
},
{ character: "Narrator", gender: "na", type: "narrative", text: "You think about the people in your life." },
{ character: "Narrator", gender: "na", type: "choice", text: "Whom would I like to learn about?",
choices: [
{ text: "Jim", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "The manager at Del Bistro ." },
{ character: "MC", gender: "female", type: "thought", text: "He<punc>s a classic perv and does whatever Candy says. I could take his load to increase my work load." },
{ character: "MC", gender: "female", type: "thought", text: "But i still think that his wallet screams louder than his penis, maybe i can improve at work." },
{ character: "MC", gender: "female", type: "thought", text: "I need to get in shape if I want to outshine Candy." }
]
},
{ text: "Kofi", result: [
{ character: "Jim", gender: "male", type: "speech", text: "Kofi the jamaican chef at Del Bistro." },
{ character: "MC", gender: "female", type: "thought", text: "Kofis really great but also very handsy at work." },
{ character: "MC", gender: "female", type: "thought", text: "I wonder what would happen if i endeared myself to him." }
]
},
{ text: "Candy", result: [
{ character: "MC", gender: "na", type: "speech", text: "my arch enemy!" },
{ character: "MC", gender: "female", type: "thought", text: "Whoa, I said that out loud." },
{ character: "MC", gender: "female", type: "thought", text: "Shes always showing off, I need to find her weakness" },
{ character: "MC", gender: "female", type: "thought", text: "I sometimes see her exercising in the park, I guess I will have to catch her some time" }
]
}
]
}
]>>
<div id="chat-container"></div>
<</nobr>>
<<do>>
<<script>>
$(document).ready(function() {
window.scrollTo(0, 0);
$("#chat-container").html(window.renderConversation(State.variables.conversation));
});
<</script>>
<</do>>
<<button "Think abouth something else">><<redo>><</button>>
<</linkreplace>>
<<set $storyinitials = 1>>
<div class=displayImage>
<img width="500px" src="img/Apartment_1.jpeg"/>
</div>
<<linkreplace "Use your electronics">>
<<nobr>>
<<switch random(1,4)>>
<<case 1>>
<<set $tvnews = "Oh wow , who new breast milk was so popular at the beach.">>
<<case 2>>
<<set $tvnews = "Oh wow , Thers a micro surgeon at the local hospital. maybe I could increase my size.">>
<<case 3>>
<<set $tvnews = "Looks like Svetlanas closet is finally open.">>
<<case 4>>
<<set $tvnews = "Another boring story. damn.">>
<</switch>>
<<set $TV = [
{
character: "Narrator",
gender: "na",
type: "narrative",
text: "The flat screen TV mounted on the wall hums softly. You grab the remote, ready to unwind."
},
{
character: "TV Menu",
gender: "na",
type: "choice",
text: "What kind of content are you in the mood for?",
choices: [
{
text: "Watch a Steamy Romance Movie",
statChanges: { "deviancy": 1 }, /* Increases deviancy */
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You find a romance movie that looks promising. Soon, the screen is filled with longing gazes, dramatic declarations, and scenes that make you blush a little." },
{ character: "MC", gender: "female", /* Adjust MC gender if needed */ type: "thought", text: "Wow, that was... more stimulating than I expected. Definitely gets the imagination going. 1+"+$divi }
]
},
{
text: "Watch the News or a Documentary",
statChanges: { /* No stat changes, or maybe add <punc>awareness<punc> or <punc>intelligence<punc> */ },
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You decide to catch up on current events or learn something new." },
{ character: "MC", gender: "female", /* Adjust MC gender */ type: "thought", text: $tvnews }
]
},
{
text: "Find an Action Movie or Sitcom",
statChanges: { "fitness":-0.5},
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "Time for some easy entertainment. You land on an action movie marathon – lots of explosions and impossible stunts. Perfect for zoning out. -0.5"+$fiti },
{ character: "MC", gender: "female", /* Adjust MC gender */ type: "thought", text: "Mindless fun. Just what I needed." }
]
},
{
text: "Tune into the Exercise Channel 15⚡",
statRequirements: [{ "stat": "wearingGym", "threshold": 1 }, {"stat": "energy", "threshold": 15 }],
statChanges: { "fitness": 2, "energy":-15 },
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "Since you<punc>re already dressed for it, you switch to the fitness channel. A high-energy instructor leads a workout set to upbeat music." },
{ character: "Narrator", gender: "na", type: "narrative", text: "You follow along, feeling the burn in your muscles. It<punc>s a good sweat session." },
{ character: "MC", gender: "female", /* Adjust MC gender */ type: "thought", text: "Definitely worked up a sweat! Glad I put this outfit to good use." }
]
}
]
}
]>>
<<set $SS = [
{
character: "Narrator",
gender: "na",
type: "narrative",
text: "The sound system in the corner promises high-fidelity audio. You browse the available music options."
},
{
character: "Sound System",
gender: "na",
type: "choice",
text: "What kind of music should fill the room?",
choices: [
{
text: "Play some Upbeat Pop",
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You select a playlist bursting with catchy pop anthems. Energetic vocals and synth hooks immediately make the room feel livelier." },
{character: "Narrator", gender: "na", type: "choice", text: "The rhythm is hard to ignore...",
choices: [
{
text: "Just Vibe to the Music",
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You let the upbeat music wash over you, tapping your foot and nodding along, enjoying the sound." }
]
},
{
text: "Dance!",
statChanges: { "mood": 1, "energy": -5 }, /* Example: +1 mood, -5 energy */
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You push aside some space and let loose! Twirling, jumping, and maybe singing along, you dance freely to the pop beats." },
{ character: "MC", gender: "female", /* Adjust MC gender */ type: "thought", text: "Heck yeah! Sometimes you just gotta dance it out!" }
]
}
]
}
]
},
{
text: "Play something Calm / Ambient",
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You select a playlist of calming ambient tracks or soft classical music. Gentle melodies and atmospheric sounds create a relaxing environment." },
{ /* --- Nested choice: No Dance option --- */
character: "Narrator", gender: "na", type: "choice", text: "Perfect for unwinding...",
choices: [
{
text: "Just Listen and Relax",
statChanges: { "deviancy": -1, "energy": 5 },
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You find a comfortable spot, close your eyes, and let the soothing music wash over you, easing any tension." },
{ character: "MC", gender: "female", type: "thought", text: "Ahh, that<punc>s nice and peaceful... -1"+$devi+" +5⚡" }
]
}
]
}
]
}
]
}
]>>
<<if $electronics[3].owned>>
<<set $milkor = "Milk Yourself">>
<<set $milker = 1>>
<<else>>
<<set $milkor = "locked">>
<</if>>
<<if $electronics[2].owned>>
<<set $TVor = "Watch TV">>
<<set $tvowned=1>>
<<else>>
<<set $TVor = "locked">>
<</if>>
<<if $electronics[1].owned>>
<<set $SSor = "Use your sound system">>
<<set $ssowned=1>>
<<else>>
<<set $SSor = "locked">>
<</if>>
<<set $elecmenu = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You look around the room searching for something to use." },
{ character: "Narrator", gender: "na", type: "choice", text: "I could?",
choices: [
{ text: $TVor, result: $TV, statRequirements:[{stat:"tvowned", threshold:1}]},
{ text: $SSor, result: $SS, statRequirements:[{stat:"ssowned", threshold:1}]},
{ text: $milkor, type:"transfer" ,result: "milk",statRequirements: [{ stat: "milker", threshold: 1 },{ stat: "usnum", threshold: 1 }]},
]
}
]>>
<div id="electronics-container"></div>
<</nobr>>
<<do>>
<<script>>
$(document).ready(function() {
window.advanceTime()
$("#electronics-container").html(window.renderConversation(State.variables.elecmenu));
});
<</script>>
<</do>>
<<button "Do something else">><<redo>><</button>>
<</linkreplace>>
[[Bedroom]]
[[Kitchen]]
<<if $wornOutfit==="waitress">>
<<if $timeCounter===1 or $timeCounter<3>>
<<button "Go to Work" "Del Bistro Restaurant">><</button>>
<</if>>
<</if>>
<<if $wornOutfit==="underwear">>
You cant go out in your underwear
<<else>>
<<button "Leave Apartment" "Central District">><<set $cooking to 3>><</button>>
<</if>> <<button "Shower" "Shower">>
<</button>>
<<button "Makeup" "Apartment">><</button>>
<<button "Finish up" "Apartment">><</button>><<nobr>>
<<set $normalFood = $normalFood or 0>>
<<set $healthyFood = $healthyFood or 0>>
<<set $junkFood = $junkFood or 0>>
<<set $hunger = $hunger or 0>>
<<set $coffeeBeans = $coffeeBeans or 4>>
<<set $tea = $tea or 0>>
<<set $whiskey = $whiskey or 0>>
<<set $wine = $wine or 0>>
<<set $beer = $beer or 0>>
<<set $energy = $energy or 50>>
<<set $deviancy = $deviancy or 0>>
<<set $coffeeMachine = $coffeeMachine or 0>> <!-- Assume coffee machine is owned for demo -->
<</nobr>>
<h2>Kitchen</h2>
<p>You step into your cozy kitchen, ready to manage your hunger and energy.</p>
<div id="kitchenMenu" class="kitchen-menu">
<div id="section-fridge" class="kitchen-section">
<h3>The Fridge</h3>
<div class="item-grid">
<div class="item-tile" data-food="normalFood">
<img src="img/items/pastaicon.png" alt="Normal Food">
<h4>Normal Food</h4>
<p>Available: <<print $normalFood>></p>
<button class="eat-button" data-food="normalFood">Eat Normal Food</button>
</div>
<div class="item-tile" data-food="healthyFood">
<img src="img/items/saladicon.png" alt="Healthy Food">
<h4>Healthy Food</h4>
<p>Available: <<print $healthyFood>></p>
<button class="eat-button" data-food="healthyFood">Eat Healthy Food</button>
</div>
<div class="item-tile" data-food="junkFood">
<img src="img/items/donuticon.png" alt="Junk Food">
<h4>Junk Food</h4>
<p>Available: <<print $junkFood>></p>
<button class="eat-button" data-food="junkFood">Eat Junk Food</button>
</div>
<div class="item-tile" data-food="junkFood">
<img src="img/items/milkicon.png" alt="milk">
<h4>Milk</h4>
<p>Available: <<print $milkBuckets>></p>
</div>
</div>
</div>
<!-- Coffee Section (only shows if coffee machine is owned) -->
<<if State.variables.electronics[4]["owned"]=== true>>
<div id="section-coffee" class="kitchen-section">
<h3>Coffee Machine</h3>
<div class="item-grid">
<div class="item-tile" data-drink="coffee">
<img src="img/items/coffeeicon.png" alt="Coffee">
<h4>Coffee</h4>
<button id="drink-coffee">Drink Coffee</button>
</div>
</div>
</div>
<</if>>
<!-- Alcohol Section -->
<div id="section-alcohol" class="kitchen-section">
<h3>Alcohol Cabinet</h3>
<div class="item-grid">
<div class="item-tile" data-alcohol="beer">
<img src="img/items/beericon.png" alt="Beer">
<h4>Beer</h4>
<p>Available: <<print $beer>></p>
</div>
<div class="item-tile" data-alcohol="wine">
<img src="img/items/wineicon.png" alt="Wine">
<h4>Wine</h4>
<p>Available: <<print $wine>></p>
</div>
<div class="item-tile" data-alcohol="whiskey">
<img src="img/items/whiskeyicon.png" alt="Whiskey">
<h4>Whiskey</h4>
<p>Available: <<print $whiskey>></p>
</div>
</div>
</div>
</div>
<style>
.kitchen-menu {
max-width: 800px;
margin: 1em auto;
padding: 1em;
background: #063a42;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.kitchen-section {
border-bottom: 1px solid #ccc;
padding-bottom: 1em;
}
.kitchen-section:last-child {
border-bottom: none;
}
.kitchen-section h3 {
margin-bottom: 0.5em;
font-size: 1.2em;
}
.item-grid {
display: flex;
flex-direction:row;
gap:0.6rem;
}
.item-tile {
background: #cfd1d080;
width:250px;
border: 1px solid #ddd;
border-radius: 4px;
padding: 0.5em;
text-align: center;
transition: box-shadow 0.3s ease;
}
.item-tile:hover {
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.item-tile img {
max-width: 100%;
height: auto;
border-radius: 4px;
}
.item-tile h4 {
margin: 0.5em 0 0.3em;
font-size: 1em;
}
.item-tile p {
font-size: 0.9em;
margin: 0.3em 0;
}
.eat-button, .drink-alcohol, #drink-coffee {
padding: 0.4em 0.8em;
font-size: 0.9em;
border: none;
border-radius: 4px;
background: #4CAF50;
color: white;
cursor: pointer;
margin-top: 0.5em;
}
.eat-button:hover, .drink-alcohol:hover, #drink-coffee:hover {
background: #45a049;
}
</style>
<<script>>
$(document).ready(function() {
// Handler for eating food
$(".eat-button").on("click", function() {
var foodType = $(this).data("food");
if (foodType === "normalFood") {
if (State.variables.normalFood > 0) {
State.variables.normalFood -= 1;
if(State.variables.hunger-25<0){
State.variables.hunger=0
}else{
State.variables.hunger -= 25;
};
if(State.variables.energy+15>100){
State.variables.energy=100
}else{
State.variables.energy += 15;
};
alert("You eat some normal food. Hunger decreases by 25.");
} else {
alert("No normal food available!");
return;
}
} else if (foodType === "healthyFood") {
if (State.variables.healthyFood > 0) {
State.variables.healthyFood -= 1;
if(State.variables.hunger-20<0){
State.variables.hunger=0
}else{
State.variables.hunger -= 20;
};
State.variables.fitness +=1;
if(State.variables.energy+15>100){
State.variables.energy=100
}else{
State.variables.energy += 15;
};
alert("You eat some healthy food. Hunger decreases by 20 and energy increases by 5.");
} else {
alert("No healthy food available!");
return;
}
} else if (foodType === "junkFood") {
if (State.variables.junkFood > 0) {
State.variables.junkFood -= 1;
if(State.variables.hunger-40<0){
State.variables.hunger=0
}else{
State.variables.hunger -= 40;
};
if(State.variables.energy+15>100){
State.variables.energy=100
}else{
State.variables.energy += 15;
};
State.variables.fitness = State.variables.fitness - 2 || 0;
alert("You eat some junk food. Hunger decreases by 40 but fitness decreases by 2.");
} else {
alert("No junk food available!");
return;
}
}
Engine.play(passage());
});
// Attach data attributes to the buttons in the Fridge section
// (Since we created them statically here, we can manually assign them)
$("div[data-food='normalFood'] .eat-button").attr("data-food", "normalFood");
$("div[data-food='healthyFood'] .eat-button").attr("data-food", "healthyFood");
$("div[data-food='junkFood'] .eat-button").attr("data-food", "junkFood");
// Handler for drinking coffee
$("#drink-coffee").on("click", function() {
if( State.variables.coffeeBeans-1>=0){
if(State.variables.hunger-5<0){
State.variables.hunger=0
}else{
State.variables.hunger -= 5;
};
if(State.variables.energy+10>100){
State.variables.energy=100
}else{
State.variables.energy += 10;
};
alert("You drink a cup of coffee. Energy increases by 10 and hunger decreases by 5.");
Engine.play(passage());
}else{
alert("You need to buy more coffee!");
Engine.play(passage());
}
});
// Handler for drinking alcohol
$(".drink-alcohol").on("click", function() {
var alcoholType = $(this).data("alcohol");
if (alcoholType === "beer") {
State.variables.deviancy += 5;
alert("You drink a beer. Deviancy increases by 5.");
} else if (alcoholType === "wine") {
State.variables.deviancy += 10;
alert("You drink some wine. Deviancy increases by 10.");
} else if (alcoholType === "whiskey") {
State.variables.deviancy += 20;
alert("You drink whiskey. Deviancy increases by 20.");
}
Engine.play(passage());
});
});
<</script>>
<<button "Leave Kitchen" "Apartment">><</button>>
<<if $dirt>1>>
<<set $beauty += 10>>
<<set $dirt = 0>>
<<script>> setup.refreshStats(); <</script>>
<<if $fitness <= 25>>
<video controls autoplay loop mute>
<source src="video_low_fitness.mp4" type="video/mp4">
</video>
base shower
<<elseif $fitness <= 40>>
<video controls autoplay loop mute>
<source src="video_below_average_fitness.mp4" type="video/mp4">
</video>
<<elseif $fitness <= 65>>
<video controls autoplay loop mute>
<source src="video_average_fitness.mp4" type="video/mp4">
</video>
<<elseif $fitness <= 80>>
<video controls autoplay loop mute>
<source src="video_above_average_fitness.mp4" type="video/mp4">
</video>
<<elseif $fitness <= 90>>
<video controls autoplay loop mute>
<source src="video_excellent_fitness.mp4" type="video/mp4">
</video>
<<else>>
<video controls autoplay>
<source src="video_exceptional_fitness.mp4" type="video/mp4">
</video>
<</if>>
<<else>>
<</if>>
<<button "Makeup" "Makeup">>
<</button>>
<<button "Dress up" "Apartment">><</button>><video width="100%" controls autoplay loop mute>
<source src="video_low_fitness.mp4" type="video/mp4">
</video>
<<button "Dress up" "Closet">><</button>>
<<button "Finish up" "Apartment">><</button>><<set $cook>>
<<if $cook== 1>>
<video controls autoplay loop mute>
<source src="video_low_fitness.mp4" type="video/mp4">
</video>
base shower
<<elseif $cook== 2>>
<video controls autoplay loop mute>
<source src="video_below_average_fitness.mp4" type="video/mp4">
</video>
<<elseif $cook== 3>>
<video controls autoplay loop mute>
<source src="video_average_fitness.mp4" type="video/mp4">
</video>
<</if>><div class="game-world-grid" id="game-world-grid">
</div>
<<set $places = [
{ name: "Bus", image: "images/bus.jpg", passage: "bus", visible: true },
{ name: "Car", image: "images/car.jpg", passage: "Car", visible: false }, // Conditionally added
{ name: "Park", image: "images/park.jpg", passage: "Park", visible: true },
{ name: "Upper District", image: "images/upper_district.jpg", passage: "Upper District", visible: false },
{ name: "Pink School", image: "images/pink_school.jpg", passage: "Pink School", visible: true },
{ name: "Clinic", image: "images/clinic.jpg", passage: "Clinic", visible: true },
{ name: "Landlord Apartment", image: "images/landlord_apartment.jpg", passage: "Landlord apartment", visible: true },
{ name: "Cab", image: "images/cab.jpg", passage: "cab", visible: true },
{ name: "Mystic Forest", image: "place1.jpg", passage: "place1", visible: false },
{ name: "Ancient Ruins", image: "place2.jpg", passage: "place2", visible: false },
{ name: "Sunlit Beach", image: "place3.jpg", passage: "place3", visible: false }
] >>
<<script>>
$(document).ready(function() {
// Render places on page load
// Function to render a single place
window.renderPlace = function renderPlace(place) {
if (place.visible) {
return `
<div class="place-block">
<a href="javascript:void(0);" data-passage="${place.passage}">
<img src="${place.image}" alt="${place.name}">
<div class="description">${place.name}</div>
</a>
</div>
`;
}
return ""; // Return empty string if not visible
};
// Function to render all places as HTML
window.renderPlaceHtml = function renderPlaceHtml(places) {
let output = "";
places.forEach(place => {
output += window.renderPlace(place); // Append rendered place
});
return output; // Return full HTML string
};
$("#game-world-grid").html(window.renderPlaceHtml(State.variables.places));
});
$(document).on("click", ".place-block a", function () {
Engine.play($(this).attr("data-passage"));
});
<</script>>
<<set $places = [
{ name: "Bus", image: "img/locations/busloc.jpg", passage: "bus", visible:true },
{ name: "Life Hospital", image: "img/locations/hospitalloc.jpg", passage: "Hospital", visible: true },
{ name: "Cobalt Modeling Studio", image: "img/locations/hospitalloc.jpg", passage: "Hospital", visible: true },
{ name: "S Bank", image: "img/locations/generalstoreloc.png", passage: "General Store", visible: false },
{ name: "Car", image: "img/locations/car.jpg", passage: "Car", visible: false },
] >>
<div id="game-world-grid"></div>
<<script>>
$(document).ready(function() {
// Function to render a single place
window.renderPlace = function renderPlace(place) {
if (place.visible) {
return `
<div class="place-block">
<a href="javascript:void(0);" data-passage="${place.passage}">
<img src="${place.image}" alt="${place.name}" style="object-fit:cover;">
<div class="description">${place.name}</div>
</a>
</div>
`;
}
return ""; // Return empty if not visible
};
// Function to render all places as HTML, only updating if necessary
window.updatePlaces = function updatePlaces() {
console.log("Updating places...");
const html = State.variables.places.map(window.renderPlace).join("");
$("#game-world-grid").html(html);
};
// Initial render of places
window.updatePlaces();
// Ensure click handler fires only once
$(document).off("click", ".place-block a").on("click", ".place-block a", function (event) {
event.preventDefault(); // Stop default behavior
event.stopPropagation(); // Stop event bubbling
const passage = $(this).attr("data-passage");
console.log("Navigating to passage:", passage);
if (!passage) {
console.error("Error: Passage name is undefined!");
return;
}
Engine.play(passage);
});
});
<</script>>
<h2>CD Mall</h2>
<<nobr>>
<div id="seducemall"></div>
<<if $timeCounter>3>>
<<linkreplace "Seduce a stranger">>
<<if $deviancy>40 and $wornOutfit==="pinkdress">>
<<do>>
<<set $responsenum = random(0,1)>>
<<set $mallencounter = random(0,2)>>
<<set $randommallsexencounter = $seducemalllist2[$mallencounter]["initial"]>>
<<set $randommallresult = $seducemalllist2[$mallencounter].responses[$responsenum]>>
<<script>>
$(document).ready(function() {
window.scrollTo(0, 0);
State.variables.seducemalllist2[State.variables.mallencounter]["initial"][State.variables.seducemalllist2[State.variables.mallencounter]["initial"].length-1].choices[State.variables.seducemalllist2[State.variables.mallencounter]["initial"][State.variables.seducemalllist2[State.variables.mallencounter]["initial"].length-1].choices.length-1].result = State.variables.randommallresult;
window.advanceTime();
console.log(State.variables.randommallresult);
$("#seducemall").html(window.renderConversation(State.variables.randommallsexencounter))
});
<</script>>
<<if $timeCounter<5>>
<<button "Look for another person">>
<<redo>>
<</button>>
<</if>>
<</do>>
<<elseif $wornOutfit != "pinkdress">>
<<set $noseduce = [{ character: "MC", gender: "female", type: "thought", text: "If I were to do something so scandalous , I<punc>d rather be wearing a pretty dress" }]>>
<<script>>
$(document).ready(function() {
window.scrollTo(0, 0);
$("#seducemall").html(window.renderConversation(State.variables.noseduce));
});
<</script>>
<<else>>
<<set $noseduce = [{ character: "MC", gender: "female", type: "thought", text: "I<punc>m not slutty enough to do something like that" }]>>
<<script>>
$(document).ready(function() {
window.scrollTo(0, 0);
$("#seducemall").html(window.renderConversation(State.variables.noseduce));
});
<</script>>
<</if>>
<</linkreplace>>
<</if>>
<<set $portrait = $hairColor+"-"+$bodyShape+"-"+"portrait.png" >>
<<set $dirtyportrait = $hairColor+"-"+"dirtyportrait.png" >>
<<set $candybath = $candybath or 0>>
<<if $deviancy>=40>>
<<set $artChoice = [
{ text: "Yes", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You buy the painting and after an hour or two it is done. $50" },
{ character: "Narrator", gender: "na", type: "image", text: "img/events/"+$portrait },
],
statChanges: { money:-50 }}
,
{ text: "Ignore it", result: [
{ character: "MC", gender: "female", type: "speech", text: "Sorry im not interested" },
{ character: "artist", gender: "male", type: "speech", text: "Thats ok, if we happen to meet again I would be happy to paint your portrait. " }
]
},
{ text: "Another kind of payment", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "The artist looks at you with a mischievous grin." },
{ character: "artist", gender: "male", type: "speech", text: "I want to paint your face while I you paint with my paintbrush." },
{ character: "artist", gender: "na", type: "video", text: "img/events/artist-mall-1.webm" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You walk towards him without breaking eye contact. Once close, you kneel down and take out his hardening paintbrush." },
{ character: "MC", gender: "female", type: "speech", text: "I could make a lot of broad strokes with this brush." },
{ character: "artist", gender: "na", type: "video", text: "img/events/artist-mall-hj1.webm" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You start stroking his hard cock vigorously." },
{ character: "artist", gender: "na", type: "video", text: "img/events/artist-mall-hj2.webm" },
{ character: "artist", gender: "male", type: "speech", text: "Ooh... yes... girl, the portrait is... coming along... nicely."},
{ character: "MCs", gender: "female", type: "speech", text: "Wow, does it have all my best features?" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You cup his balls and rub them together with his cock." },
{ character: "artist", gender: "male", type: "speech", text: "Im about to paint you white!"},
{ character: "artist", gender: "na", type: "video", text: "img/events/artist-mall-hj3.webm" },
{ character: "Narrator", gender: "na", type: "narrative", text: "He eventually finishes painting your face and the canvas." },
{ character: "Narrator", gender: "na", type: "image", text: "img/events/"+$dirtyportrait }
],
statChanges: { money:-50 }}
]>>
<<else>>
<<set $artChoice = [
{ text: "Yes", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You buy the painting and after an hour or two it is done. $50" },
{ character: "artist", gender: "male", type: "speech", text: "Maybe next time we can discuss a different sort of payment." },
{ character: "Narrator", gender: "na", type: "narrative", text: "He directs a lusty grin at you" },
{ character: "artist", gender: "male", type: "speech", text: "I see that you are always changing your style so dont be scared to get another portrait." },
{ character: "Narrator", gender: "na", type: "image", text: "img/events/"+$portrait },
],
statChanges: { money:-50 }}
,
{ text: "Ignore it", result: [
{ character: "MC", gender: "female", type: "speech", text: "Sorry im not interested" },
{ character: "artist", gender: "male", type: "speech", text: "Thats ok, if we happen to meet again I would be happy to paint your portrait. If its about payment , We couldve explored other options." }
]
}]>>
<</if>>
<<set $randomConversation = either([
[
{ character: "MC", gender: "female", type: "narrative", text: "A life portrait artist beckons you to come in to his section" },
{character: "Narrator", gender: "na", type: "choice", text: "How do you react?",
choices: [
{ text: "Go talk to him", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "He invites you to take a seat."},
{ character: "artist", gender: "male", type: "speech", text: "My lady, if I could steal a moment, I would be happy to paint your portrait for a small fee of $50." },
{ character: "Narrator", gender: "na", type: "choice", text: "Do you buy the painting?",
choices: $artChoice
}
]}
]}],
[ { character: "MC", gender: "female", type: "thought", text: "The mall is always lively" } ],
[
{ character: "Narrator", gender: "na", type: "narrative", text: "You see Candy flirting with a group of men in the mall" },
{ character: "MC", gender: "female", type: "thought", text: "There she is again, with more men wrapped around her finger" },
{ character: "candy", gender: "trans", type: "speech", text: "Oh my, calm down boys. Theres enough of me for all of you." },
{ character: "MC", gender: "female", type: "video", text: "img/events/candy-mall1.webm" },
{character: "Narrator", gender: "na", type: "choice", text: "She leads one man to the bathroom. Do you follow them?",
choices: [
{ text: "Follow", type:"transfer", statChanges: {candybath:1} , result: "Mall Toilet" }
]
}
],
[
{ character: "MC", gender: "female", type: "narrative", text: "You see a flashmob. Theyre having a party in the mall" },
{ character: "MC", gender: "female", type: "video", text: "img/events/flashmob.mp4" },
],
[ { character: "Narrator", gender: "na", type: "narrative", text: "The silence is almost eerie, as if the world is holding its breath." } ],
[
{ character: "MC", gender: "female", type: "narrative", text: "You hear a wayward conversation in the mall" },
{ character: "stranger1", gender: "male", type: "speech", text: "Ayye Shirley, you been to the gym?" },
{ character: "stranger2", gender: "female", type: "speech", text: "Yeah dude , they got all the latest equipment. And I met one of the trainers. You know, Alexis." },
{ character: "stranger1", gender: "male", type: "speech", text: "Alexis! I heard shes got a nice body." },
{ character: "stranger2", gender: "female", type: "speech", text: "Right. Shes banging." },
{ character: "stranger1", gender: "male", type: "speech", text: "Shes also got her own set of tools. If you know what I mean." },
{ character: "MC", gender: "female", type: "narrative", text: "The second stranger blushes." },
],
[ { character: "Narrator", gender: "na", type: "narrative", text: "You see an ad for casual clothing." },
{ character: "MC", gender: "female", type: "thought", text: "I should get more threads , im seriously lackin in the wardrobe department." }
]
,
[
{ character: "Narrator", gender: "na", type: "narrative", text: "You spot a beautiful woman adjusting an open sign in the Odai body studio" },
{character: "Narrator", gender: "na", type: "choice", text: "Take a closer look.",
choices: [
{ text: "Check her out", result: [
{ character: "Narrator", gender: "na", type: "image", text: "img/characters/autumn-fullbody.png" },
]
}
]
} ],
]
)>>
<</nobr>>
<div id="chat-container"></div>
<<script>>
$(document).ready(function() {
console.log(State.variables.randomConversation)
$("#chat-container").html(window.renderConversation(State.variables.randomConversation));
});
<</script>>
<div id="game-world-grid">
</div>
<<set $places = [
{ name: "Odai Body Studio", image: "img/locations/salonloc.jpeg", passage: "Salon", visible: true },
{ name: "Svetlanas Closet", image: "img/locations/clothloc.jpeg", passage: "Clothes Store", visible: true },
{ name: "Mall Toilet", image: "img/locations/malltoiletloc.jpg", passage: "Mall Toilet", visible: true },
{ name: "Gym", image: "img/locations/gymloc.jpeg", passage: "Gym Reception", visible: true },
{ name: "Electronics For Them", image: "img/locations/electronicsstoreloc.jpeg", passage: "Electronics Store", visible: true },
] >>
<<script>>
$(document).ready(function() {
// Function to render a single place
window.renderPlace = function renderPlace(place) {
if (place.visible) {
return `
<div class="place-block">
<a href="javascript:void(0);" data-passage="${place.passage}">
<img src="${place.image}" alt="${place.name}" style="object-fit:cover;">
<div class="description">${place.name}</div>
</a>
</div>
`;
}
return ""; // Return empty if not visible
};
// Function to render all places as HTML, only updating if necessary
window.updatePlaces = function updatePlaces() {
console.log("Updating places...");
const html = State.variables.places.map(window.renderPlace).join("");
$("#game-world-grid").html(html);
};
// Initial render of places
window.updatePlaces();
// Ensure click handler fires only once
$(document).off("click", ".place-block a").on("click", ".place-block a", function (event) {
event.preventDefault(); // Stop default behavior
event.stopPropagation(); // Stop event bubbling
const passage = $(this).attr("data-passage");
console.log("Navigating to passage:", passage);
if (!passage) {
console.error("Error: Passage name is undefined!");
return;
}
Engine.play(passage);
});
});
<</script>>
<<button "Leave" "Central District">><</button>> <h2>Hospital Reception</h2>
<p>The hospital is as busy as ever. Yor see a woman in a nurses uniform standing at the front desk</p>
<<if $timeCounter <4>>
<<set $hospitalConversation = [
{ character: "Olga", gender: "female", type: "speech", text: "Welcome to Life Hospital. How can we be of service?" },
{ character: "MC", gender: "female", type: "choice", text: "Do you chat with the Receptionist?",
choices: [
{ text: "Introduce yourself",
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "The nurse/receptionist stands before you holding a giant wooden mallet." },
{ character: "Kyle", gender: "male", type: "image", text: "img/characters/Olga-full.jpeg" },
{ character: "MC", gender: "female", type: "speech", text: "Hi,I just want to know what kind of procedures I can get done here." },
{ character: "Olga", gender: "female", type: "speech", text: "That<punc>s not an issue. This is a cosmetic hospital. We offer breast augmentations, butt lifts, and sex change surgery." },
{ character: "Narrator", gender: "na", type: "choice", text: "Do you ask about her surgeries?",
choices: [
{ text: "Ask if she has had any surgery",
result: [
{ character: "MC", gender: "female", type: "speech", text: "Have you had any procedures done? You look very natural." },
{ character: "Olga", gender: "female", type: "speech", text: "Of course, I<punc>ve been working in this hospital for years." },
{ character: "Olga", gender: "female", type: "speech", text: "Look at my employee photo." },
{ character: "Kyle", gender: "male", type: "image", text: "img/characters/Olga-1880.jpeg" },
{ character: "MC", gender: "female", type: "speech", text: "You look amazing wow!" },
{ character: "MC", gender: "female", type: "thought", text: "This lady is 140 years old!" },
]
}
]
},
{ character: "MC", gender: "female", type: "speech", text: "Uhh cool. By the way, why are you holding a huge wooden mallet?" },
{ character: "Olga", gender: "female", type: "speech", text: "Some patients think it<punc>s fun to have relations in the hospital. This is for them." },
{ character: "Narrator", gender: "na", type: "narrative", text: "She looks at you with a serious expression while adjusting her mallet." }
]
},
{ text: "Make an appointment",
result: [
{ character: "Olga", gender: "female", type: "speech", text: "It looks like you don<punc>t have an appointment. The cost is $150." },
{ character: "Narrator", gender: "na", type: "choice", text: "Do you make an appointment?",
choices: [
{ text: "Yes",
result: [
{ character: "MC", gender: "female", type: "speech", text: "I guess I<punc>ll see the doctor now." },
{ character: "Olga", gender: "female", type: "speech", text: "OK, right this way." },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Follow her", type: "transfer", result: "Doctor Office" }
]
}
],
statChanges: { money: -$appointmentCost },
statRequirements: { stat: "money", threshold: $appointmentCost }
},
{ text: "No",
result: [
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ll think about it for now." },
{ character: "Olga", gender: "female", type: "speech", text: "Alight, but no lollygagging." }
]
},
]
}
]
}
,
{ text: "Leave", type: "transfer", result: "Upper District" }
]
}
]>>
<<button "Ask her something else">><<redo>><</button>>
<<else>>
<<set $hospitalConversation = [
{ character: "Narrator", gender: "na", type: "narrative", text: "The hospital only attends to emergencies in the evening." },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [ { text: "leave", type: "transfer", result: "Upper District" }] }
]>>
<</if>>
<div id="hospitalchat-container"></div>
<<do>>
<<script>>
$(document).ready(function() {
$("#hospitalchat-container").html(window.renderConversation(State.variables.hospitalConversation));
});
window.scrollTo(0, 0);
<</script>>
<</do>>
<<button "Leave" "Upper District">><</button>><<button "Leave" "Upper District">><</button>>[[Park]]
[[Mall]]
[[Upper District]]
[[Pink School]]
[[Clinic]]
[[Landlord apartment]]
[[bus]]
[[cab]]
[[bus]]
[[car]]
[[Hood District]]
[[Central District]]
[[Del Bistro Restaurant]]
[[Red Light District]]
[[Sexual Delights Store]]
[[The Goon Strip Club]]
[[Galaxy Night Club]]
[[To Rent Sign]]
[[Mall]]
[[Hospital]]
[[Business Corporate]]
[[Bank]]
[[Modeling Agency]]<<nobr>>
<<set $exercised =$exercised or 0>>
<<switch random(1,3)>>
<<case 1>>
<<set $candyvid= "img/events/candy-yoga.webm">>
<<case 2>>
<<set $candyvid= "img/events/candy-yoga2.webm">>
<<case 3>>
<<set $candyvid= "img/events/candy-park.webm">>
<</switch>>
<<switch $bodyShape>>
<<case "large">>
<<set $candyRunMess= { character: "Candy", gender: "trans", type: "speech", text: "OMG! $firstname , Are you ready to run and maybe see your feet again?" } >>
<<case "overw">>
<<set $candyRunMess= { character: "Candy", gender: "trans", type: "speech", text: "OMG! $firstname , Are you gonna turn that fat ass into a booty today?" } >>
<<case "fit">>
<<set $candyRunMess= { character: "Candy", gender: "trans", type: "speech", text: "OMG! $firstname , Lets kick butt today!" } >>
<<case "sexy">>
<<set $candyRunMess= { character: "Candy", gender: "trans", type: "speech", text: "OMG! $firstname , that body of yours is gonna distract me from my run!" } >>
<</switch>>
<</nobr>>
<<script>>
window.getParkEventByBodyShape = function(exerciseType) {
let events = [];
const bs = State.variables.bodyShape;
switch(bs) {
case "large":
if (exerciseType === "Walking") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"Even with my large frame, a gentle walk feels refreshing." }],
[{ character: "MC", gender: "female", type:"speech", text:"Man, I<punc>m tired. I need a break." }],
[ { character: "MC", gender: "female", type:"thought", text:"A slow walk helps me ease into the day despite my size." }],
[ { character: "MC", gender: "female", type:"speech", text:"I enjoy a peaceful stroll, even if I feel a bit weighed down." }]
];
} else if (exerciseType === "Jogging") {
events = [
[ { character: "MC", gender: "female", type:"speech", text:"Jogging is a challenge with my large frame, but I push on." }],
[ { character: "MC", gender: "female", type:"thought", text:"Every jog is a victory against my limitations." }],
[{ character: "MC", gender: "female", type:"speech", text:"I manage a slow jog, feeling determined despite the strain." }],
[{ character: "MC", gender: "female", type:"speech", text:"Even a jog can feel empowering when I beat the odds." }]
];
} else if (exerciseType === "Running") {
events = [
[
{ character: "MC", gender: "female", type:"speech", text:"The burn in my muscles is intense Candy!" },
{ character: "Candy", gender: "trans", type:"speech", text:"Don<punc>t you dare quit on me lard legs!" }
],
[
{ character: "MC", gender: "feme", type:"narrative", text:"You slow down to a halt. Candy isnt berating you with insults. You notice her staring at something" },
{ character: "Candy", gender: "trans", type:"speech", text:"My oh my..." },
{character: "Narrator", gender: "na", type: "choice", text: "Take a look at what she sees",
choices: [
{ text: "Look +1"+State.variables.devi, result: [
{ character: "Candy", gender: "male", type: "video", text: "img/events/runev1.webm" },
{ character: "Candy", gender: "trans", type:"speech", text:"You like what you see, $firstname? that could be you soon." },
], statChanges: { deviancy:1 }}
,{ text: "Ignore"}]}
],
[{ character: "MC", gender: "female", type:"narrative", text:"You run hard, feeling every step challenge your limits." }],
[
{ character: "MC", gender: "female", type:"thought", text:"Even running leaves me breathless, but I feel alive." },
{ character: "Candy", gender: "trans", type:"speech", text:"Get your ass in gear $firstname! These calories arent going to burn themselves!" },
{character: "Narrator", gender: "na", type: "choice", text: "Push harder? Or",
choices: [
{ text: "Run!!! -20 energy +2"+State.variables.fiti,result: [
{ character: "Candy", gender: "trans", type:"speech", text:"Yes Babe! Give it your all!" },
], statChanges: { fitness:2 ,energy:-20 }}
,{ text: "Ignore",result: [
{ character: "Candy", gender: "trans", type:"speech", text:"Stop being a fucking loser and get up!" }
]}]}
]
];
} else if (exerciseType === "Chilling") {
events = [
[ { character: "MC", gender: "female", type:"narrative", text:"I settle on a bench, my large frame relaxed in the soft park light." }],
[{ character: "MC", gender: "female", type:"speech", text:"Chilling here lets me catch my breath and savor the moment." }],
[ { character: "MC", gender: "female", type:"thought", text:"Sometimes, resting is the best way to recharge my energy." }],
[{ character: "MC", gender: "female", type:"speech", text:"Guess I<punc>ll take it easy." }]
];
}
break;
case "overw":
if (exerciseType === "Walking") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"A gentle walk helps me manage my extra weight." }],
[{ character: "MC", gender: "female", type:"thought", text:"Each step is a reminder to take it slow." }],
[{ character: "MC", gender: "female", type:"speech", text:"Walking feels steady and calm, just what I need." }],
[{ character: "MC", gender: "female", type:"speech", text:"A peaceful walk lightens my mood even if I'm overweight." }]
];
} else if (exerciseType === "Jogging") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"Jogging makes my heart race, but I keep pushing." }],
[{ character: "MC", gender: "female", type:"thought", text:"I jog with determination, each step a small triumph." }],
[{ character: "MC", gender: "female", type:"speech", text:"I enjoy the challenge of jogging, even with extra weight." }],
[{ character: "MC", gender: "female", type:"speech", text:"Every jog brings me a step closer to feeling lighter." }]
];
} else if (exerciseType === "Running") {
events = [
[
{ character: "MC", gender: "female", type:"speech", text:"Running is tough with extra pounds, but I push through." },
{ character: "Candy", gender: "trans", type:"speech", text:"You<punc>ve lose a little bit of weight baby girl." },
{ character: "Candy", gender: "trans", type:"narrative", text:"You sense candy sneaking up behind you." },
{character: "Narrator", gender: "na", type: "choice", text: "Do you dodge?",
choices: [
{ text: "No +1"+State.variables.devi, result: [
{ character: "MC", gender: "fele", type:"narrative", text:"Candy swiftly gets behind you snaking her arms around your waist and grasping your breasts" },
{ character: "Candy", gender: "male", type: "image", text: "img/events/mc-candy-"+State.variables.hairColor+"-parkgrab.png" },
{ character: "Candy", gender: "trans", type:"speech", text:"You got some fat in the right places $firstname. " },
{ character: "MC", gender: "female", type:"narrative", text:"you feel your nipples hardening as she continues to rub your breasts." },
{ character: "MCs", gender: "female", type:"speech", text:"Hey...<animate>Hnnn</animate>... let go!" },
{ character: "MC", gender: "fele", type:"narrative", text:"Candy lets go of your breasts" },
{ character: "Candy", gender: "trans", type:"speech", text:"You<punc>re safe for now $firstname. " }
], statChanges: { deviancy:1 }}
,{ text: "Yes +1"+State.variables.fiti, result: [
{ character: "MC", gender: "female", type:"speech", text:"Ha! too slow." },
{ character: "Candy", gender: "trans", type:"speech", text:"You escaped my grasp this time." },
], statChanges: { fittness:1 } }]}
],
[
{ character: "MC", gender: "female", type:"thought", text:"I think I<punc>m getting a little better at this, I feel alive." },
{ character: "Candy", gender: "trans", type:"speech", text:"Get your ass in gear $firstname! These calories arent going to burn themselves!" },
{character: "Narrator", gender: "na", type: "choice", text: "Push harder? Or",
choices: [
{ text: "Run!!! -10 energy +3"+State.variables.fiti,result: [
{ character: "Candy", gender: "trans", type:"speech", text:"Yes Babe! Give it your all!" },
{ character: "Candys", gender: "trans", type:"speech", text:"Your going to be so fucking hot! I cant wait!" },
{character: "Narrator", gender: "na", type: "choice", text: "Candy<punc>s inches closer to yours",
choices: [
{
text: "Kiss +3"+State.variables.devi,result: [
{ character: "MC", gender: "fele", type:"narrative", text:"You make out pasionately, swapping spit and sucking tongue" },
{ character: "Candy", gender: "trans", type:"video", text:"img/events/runev2.webm" },
{ character: "MC", gender: "fele", type:"narrative", text:"Eventually you stop" },
{ character: "Candys", gender: "trans", type:"speech", text:"Keep joining me on these morning runs and there<punc>ll be more where that came from." }
]
, statChanges: { deviancy:3 ,energy:-5 }
},
{
text: "Hug",result: [
{ character: "MC", gender: "fele", type:"narrative", text:"You hug Candy" },
{ character: "MC", gender: "female", type:"speech", text:"Thanks for everything Candy" },
{ character: "Candy", gender: "trans", type:"speech", text:"Uhh alright, anytime." }
]
}
]
}
], statChanges: { fitness:3 ,energy:-10 , candy:1 }}
,{ text: "Ignore",result: [
{ character: "Candy", gender: "trans", type:"speech", text:"Stop being a fucking loser and get up!" }
]}]}
],
[
{ character: "MC", gender: "feme", type:"narrative", text:"You slow down to a halt. Candy isnt berating you with insults. You notice her staring at something" },
{ character: "Candy", gender: "trans", type:"speech", text:"My oh my..." },
{character: "Narrator", gender: "na", type: "choice", text: "Take a look at what she sees",
choices: [
{ text: "Look +2"+State.variables.devi, result: [
{ character: "MC", gender: "fele", type:"narrative", text:"You spot a couple fucking in public" },
{ character: "Candy", gender: "male", type: "video", text: "img/events/runev3.webm" },
{ character: "MCs", gender: "female", type:"speech", text:"Oh my indeed..." },
{ character: "Candy", gender: "trans", type:"speech", text:"You like what you see, $firstname?" },
{ character: "MC", gender: "fele", type:"narrative", text:"You respond by blushing and jetting off ahead of Candy" },
{ character: "Candy", gender: "trans", type:"speech", text:"Weirdo. Hey wait up!" },
], statChanges: { deviancy:2 }}
,{ text: "Ignore"}]}
],
[ { character: "MC", gender: "female", type:"speech", text:"I run hard, knowing each stride helps me overcome my limits." }]
];
} else if (exerciseType === "Chilling") {
events = [
[{ character: "MC", gender: "female", type:"thought", text:"I relax on the park bench, letting the calm ease my worries." }],
[{ character: "MC", gender: "female", type:"speech", text:"Chilling here is a perfect way to recuperate." }],
[{ character: "MC", gender: "female", type:"thought", text:"Taking a break helps me recover for the next challenge." }],
[{ character: "MC", gender: "female", type:"speech", text:"I just sit back, enjoying the peaceful park vibe." }]
];
}
break;
case "fit":
if (exerciseType === "Walking") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"A brisk walk keeps my fit body in prime condition." }],
[{ character: "MC", gender: "female", type:"speech", text:"I stride confidently, enjoying the rhythm of my steps." }],
[{ character: "MC", gender: "female", type:"thought", text:"A light walk refreshes both mind and body." }],
[{ character: "MC", gender: "female", type:"speech", text:"Walking is a smooth and effortless exercise for me." }]
];
} else if (exerciseType === "Jogging") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"Jogging feels natural, my body in perfect sync with each step." }],
[{ character: "MC", gender: "female", type:"thought", text:"I maintain a steady pace, enjoying my robust fitness." }],
[{ character: "MC", gender: "female", type:"speech", text:"Jogging reinforces my commitment to staying fit." }],
[{ character: "MC", gender: "female", type:"speech", text:"I relish the simple joy of a good jog." }]
];
} else if (exerciseType === "Running") {
events = [
[
{ character: "MC", gender: "female", type:"thought", text:"I think I<punc>m gettinga little better at this, I feel alive." },
{ character: "Candy", gender: "trans", type:"speech", text:"Get your ass in gear $firstname! These calories arent going to burn themselves!" },
{character: "Narrator", gender: "na", type: "choice", text: "Push harder? Or",
choices: [
{ text: "Run!!! -10 energy +3"+State.variables.fiti,result: [
{ character: "Candy", gender: "trans", type:"speech", text:"Yes Babe! Give it your all!" },
{ character: "Candys", gender: "trans", type:"speech", text:"You<punc>re so fucking hot babe!" }
], statChanges: { fitness:3 ,energy:-10 }}
,{ text: "Ignore",result: [
{ character: "Candy", gender: "trans", type:"speech", text:"Stop being a fucking loser and get up!" }
]}]}
],
[{ character: "MC", gender: "female", type:"thought", text:"Every sprint is a burst of pure power." }],
[{ character: "MC", gender: "female", type:"speech", text:"I run fast and strong, enjoying every moment." }],
[{ character: "MC", gender: "female", type:"speech", text:"My speed and endurance make every run a triumph." }]
];
} else if (exerciseType === "Chilling") {
events = [
[{ character: "MC", gender: "female", type:"thought", text:"I take a break on the park bench, my body well-rested and calm." }],
[{ character: "MC", gender: "female", type:"speech", text:"Chilling is a welcome chance to simply enjoy the day." }],
[{ character: "MC", gender: "female", type:"thought", text:"Resting helps me maintain my fitness." }],
[{ character: "MC", gender: "female", type:"speech", text:"I relax, knowing I'm in peak condition." }]
];
}
break;
case "sexy":
if (exerciseType === "Walking") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"Every step feels graceful as I walk with my sexy figure." }],
[{ character: "MC", gender: "female", type:"speech", text:"I walk confidently, knowing I turn heads." }],
[{ character: "MC", gender: "female", type:"thought", text:"A stroll is a chance to show off my curves." }],
[{ character: "MC", gender: "female", type:"speech", text:"Walking is just another way to shine." }]
];
} else if (exerciseType === "Jogging") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"Jogging accentuates my sexy form as I move with determination." }],
[{ character: "MC", gender: "female", type:"thought", text:"Every jog is a dance of strength and beauty." }],
[{ character: "MC", gender: "female", type:"speech", text:"I jog with confidence, radiating sex appeal." }],
[{ character: "MC", gender: "female", type:"speech", text:"My jog is a performance, and I'm the star." }]
];
} else if (exerciseType === "Running") {
events = [
[{ character: "MC", gender: "female", type:"speech", text:"I run with fiery passion, my sexy figure on full display." }],
[{ character: "MC", gender: "female", type:"thought", text:"Every sprint highlights my strength and allure." }],
[{ character: "MC", gender: "female", type:"speech", text:"Running is a celebration of my confidence." }],
[{ character: "MC", gender: "female", type:"speech", text:"I dash through the park, turning every head." }]
];
} else if (exerciseType === "Chilling") {
events = [
[{ character: "MC", gender: "female", type:"thought", text:"I relax on the bench, my sexy aura undiminished even at rest." }],
[{ character: "MC", gender: "female", type:"speech", text:"Chilling in the park lets me savor my allure." }],
[{ character: "MC", gender: "female", type:"thought", text:"Rest feels as satisfying as my best look." }],
[{ character: "MC", gender: "female", type:"speech", text:"Even when I chill, I radiate sex appeal." }]
];
}
break;
default:
events = [
{ character: "MC", gender: "female", type:"speech", text:"I wander through the park, unsure of what to do." }
];
break;
}
// Randomly select one event from the chosen list.
const randomIndex = Math.floor(Math.random() * events.length);
return events[randomIndex];
};
<</script>>
<h2>Park</h2>
<p>You find yourself surrounded by green lawns. The park invites you to get some exercise—or simply relax. What will you do?</p>
<div id="parkChat"></div>
<!-- Exercise Options -->
<<do>><<if $energy >= 10>>
<<button "Walk">>
<<set $exercise = "Walking">>
<<set $exercised += 1>>
<<run $("#parkChat").html(window.renderConversation(window.getParkEventByBodyShape("Walking")))>>
<<set $energy -= 10>>
<<script>>
window.scrollTo(0, 0)
window.advanceTime(1);
State.variables.fitness+=window.statGainDropper("Walking");
<</script>>
You take a leisurely walk.
<<redo>>
<</button>>
<<else>>
<div id="walkmess"></div>
<<script>>
$(document).ready(function() {
$("#walkmess").html(window.renderConversation([ { character: "MC", gender: "female", type: "thought", text: " I don<punc>t have enough energy to walk." }, ]))
});
<</script>>
<</if>><</do>>
<<do>>
<<if $wornOutfit==="gym" and $energy>=10>>
<<button "Jog">>
<<script>>
window.advanceTime(1);
window.scrollTo(0, 0);
State.variables.fitness+=window.statGainDropper("Jogging");
<</script>>
<<set $exercised += 1>>
<<set $exercise = "Jogging">>
<<run $("#parkChat").html(window.renderConversation(window.getParkEventByBodyShape("Jogging")))>>
<<set $energy -= 15>>
You start jogging.
<<redo>>
<</button>>
<<elseif $energy<10>>
<div id="jogmess"></div>
<<script>>
$(document).ready(function() {
$("#jogmess").html(window.renderConversation([ { character: "MC", gender: "female", type: "thought", text: " I don<punc>t have enough energy to Jog." }, ]))
});
<</script>>
<<else>>
<div id="jogmess"></div>
<<script>>
$(document).ready(function() {
$("#jogmess").html(window.renderConversation([ { character: "MC", gender: "female", type: "thought", text: " I need to wear my sports gear if I want to Jog in the park." }, ]))
});
<</script>>
<</if>><</do>>
<<if $candy<1>>
<<set $candy+=1>>
<<set $candychat1 = [
{ character: "narrator", type: "narrative", text: "The park was quiet except for the distant sounds of birds and the occasional jogger passing by." },
{ character: "Candy", gender: "na", type: "narrative", text: "Candy strolled up, making sure to sway her hips in a teasing manner." },
{ character: "Candy", gender: "trans", type: "speech", text: "OMG! $firstname what are you doing here , dont tell me youre working out? lol" },
{ character: "MC", gender: "female", type: "speech", text: "Uh… yeah? Why?" },
{ character: "Candy", gender: "trans", type: "speech", text: "Babe, you<punc>re in jeans. What? gonna run a marathon in those?" },
{ character: "MC", gender: "female", type: "speech", text: "I was just gonna walk or something." },
{ character: "Candy", gender: "trans", type: "speech", text: "Pfft. You think walking<punc>s gonna fix that?" },
{ character: "MC", gender: "female", type: "speech", text: "Fix what?" },
{ character: "MC", gender: "female", type: "thought", text: "Okay, rude." },
{ character: "narrator", type: "narrative", text: "$firstname glanced down at her sneakers, scuffing them against the pavement. Candy stretched her arm, unbothered." },
{ character: "MC", gender: "female", type: "speech", text: "Not everyone has to suffer to be healthy, Candy." },
{ character: "Candy", gender: "trans", type: "speech", text: "No, but you gotta do more than strolling like an old lady. Maybe invest in some leggings first, though. Those jeans are holding on for dear life." },
{ character: "narrator", type: "narrative", text: "Candy starts modeling her sexy workout gear." },
{ character: "ews", type:"video", text: "img/events/candy-park.webm" },
{ character: "MC", gender: "female", type: "thought", text: "She does look hot. Wait, why am I even listening to her?" },
{ character: "MC", gender: "female", type: "speech", text: "Thanks for the unsolicited advice. I'll be sure to struggle aesthetically next time." },
{ character: "Candy", gender: "trans", type: "speech", text: "You<punc>re welcome, babe. Just looking out for you. By the way , you can find me here in the morning if you need any help. I dont take walks though" },
{ character: "narrator", type: "narrative", text: "Candy smirked and took another long look at you before giggling and jogging away." },
{ character: "ews", type:"image", text: "img/events/candy-park.jpg" },
]>>
<<elseif $timeCounter===0 and $candy>0>>
<<set $candychat1 = [
{ character: "narrator", type: "narrative", text: "You see Candy in the park" },
{ character: "ews", type:"video", text: $candyvid },
$candyRunMess,
{ character: "MC", gender: "female", type: "speech", text: "Uh… yeah? Why?" },
{ character: "Candy", gender: "trans", type: "speech", text: "Best choice ever ,Babe . Lets get started!" },
]>>
<<else>>
<<set $candychat1 = []>>
<</if>>
<<script>>
$(document).ready(function() {
$("#parkChat").html(window.renderConversation(State.variables.candychat1));
});
<</script>>
<<do>>
<<if $wornOutfit==="gym" and $timeCounter===0 and $energy >= 20>>
<<button "Run with Candy">>
<<script>>
window.advanceTime(1);
window.scrollTo(0, 0);
State.variables.fitness+=window.statGainDropper("Running");
<</script>>
<<set $exercise = "Running">>
<<set $exercised += 1>>
<<run $("#parkChat").html(window.renderConversation(window.getParkEventByBodyShape("Running")))>>
<<set $energy -= 20>>
<<redo>>
<</button>>
<<elseif $energy < 20>>
<div id="runmess"></div>
<<script>>
$(document).ready(function() {
$("#runmess").html(window.renderConversation([ { character: "MC", gender: "female", type: "thought", text: " I don<punc>t have enough energy to run." }, ]))
});
<</script>>
<<else>>
<div id="runmess"></div>
<<script>>
$(document).ready(function() {
$("#runmess").html(window.renderConversation([ { character: "MC", gender: "female", type: "thought", text: " I should catch candy in the mornings. Maybe we can exercise together." }, ]))
});
<</script>>
<</if>>
<</do>>
<<button "Chill">>
<<set $exercise = "Chilling">>
<<run $("#parkChat").html(window.renderConversation(window.getParkEventByBodyShape("Chilling")))>>
<<set $energy += 2>>
<<script>>
window.advanceTime(1);
window.scrollTo(0, 0);
<</script>>
You decide to relax on a park bench.
<</button>>
<<button"Leave the Park" "Central District">><</button>>
<!-- Advance time by 1 step -->
<<script>>
window.advanceTime();
<</script>>
<<set $previousPassage = previous()>>
<!-- Random Bus Event -->
<<switch random(1,4)>>
<<case 1>>
<<set $busEvent = [
{ character: "stranger1", gender: "male", type:"speech", text:"Buckle up, we<punc>re off!" },
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
] >>
<<case 2>>
<<set $busEvent = [
{ character: "stranger1", gender: "male", type:"speech", text:"Hope you<punc>re ready for a smooth ride!" },
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
]>>
<<case 3>>
<<set $busEvent = [
{ character: "stranger1", gender: "male", type:"speech", text:"Hold tight—this bus might hit a few bumps!" } ,
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
]>>
<<case 4>>
<<set $busEvent = [
{ character: "stranger1", gender: "male", type:"speech", text:"We<punc>re nearly there, just enjoy the ride!" } ,
{ character: "Narrator", gender: "na", type: "narrative", text: "You step onto the crowded bus, the aroma of sweat and perfume filling your nostrils. As you find a spot to stand, you feel a hand brushing against your thigh." },
{ character: "Narrator", gender: "na", type: "choice",
text: "Do you...",
choices: [
{ text: "Slap it away", result:[
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
]
},
{ text: "Let it continue", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You decide to let it continue. The hand lingers, tracing the length of your thigh. You feel a shiver run down your spine as the hand moves up, brushing against your ass." },
{ character: "Narrator", gender: "na", type: "narrative", text: "The bus lurches, pushing you back into the stranger. You can feel his hardness pressing against you. His hand moves to your breast, squeezing it firmly." },
{ character: "Stranger", gender: "male", type: "speech", text: "You like that, don<punc>t you?" },
{ character: "Narrator", gender: "na", type: "narrative", text: "He continues to grope you, his breath ragged in your ear. After a few more stops, he hands you a crumpled note." },
{ character: "Stranger", gender: "male", type: "speech", text: "Here, for your cooperation. +$50" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You look down at the money, then back at the stranger. He winks at you before getting off at the next stop." },
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
]}
]
}
]>>
<</switch>>
<<set $busEntry = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You step onto the bus. The driver looks at you, waiting for your fare." },
{ character: "Narrator", gender: "na", type: "choice", text: "Do you pay the fare?", choices: [
{ text: "Pay $5 and take a seat.", statChanges: { money:-5 }, statRequirement: { stat: "money", threshold: 5 }, result: $busEvent },
{ text: "Step back and leave.", type: "transfer", result: $previousPassage }
]}
]>>
<div id="buschat-container"></div>
<<script>>
$(document).ready(function() {
$("#buschat-container").html(window.renderConversation(State.variables.busEntry));
});
<</script>>
<!-- Bus Destination Choice Block -->
<<set $busChoice = [
{ character: "Narrator", gender: "na", type: "choice", text: "The bus stops. Where do you want to go?", choices: [
{ text: "Central District", type:"transfer", result: "Central District" },
{ text: "Downtown", type:"transfer", result: "Downtown" },
{ text: "Uptown", type:"transfer", result: "Uptown" }
]}
]>>
<<run $("#chat-container").append(window.renderConversation($busChoice))>><div class="game-world-grid">
<div class="place-block">
<a href="javascript:void(0);" data-passage="bus" style="background-image: url('img/locations/busloc.jpg');">
<div class="description">Bus</div>
</a>
</div>
<div class="place-block">
<a href="javascript:void(0);" data-passage="Sexual Delights Store" style="background-image: url('img/locations/sexstoreloc.jpg');">
<div class="description">Sexual Delights Store</div>
</a>
</div>
<div class="place-block">
<a href="javascript:void(0);" data-passage="Galaxy Night Club" style="background-image: url('img/locations/nightclubloc.jpg');">
<div class="description">Galaxy Night Club</div>
</a>
</div>
<div class="place-block">
<a href="javascript:void(0);" data-passage="The Goon Club" style="background-image: url('img/locations/striploc.jpg');">
<div class="description">The Goon Club</div>
</a>
</div>
</div><<nobr>>
<<if $fitness>=45>>
<<set $slapResult = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You slap the dogshit out of him" },
{ character: "Narrator", gender: "na", type: "video", text: "img/events/slapwin.mp4" }
]>>
<<else>>
<<set $slapResult = [
{ character: "Narrator", gender: "na", type: "narrative", text: "He dodges your attacks." },
{ character: "Narrator", gender: "na", type: "video", text: "img/events/slaplose.mp4" }
]>>
<</if>>
<<if $usnum>0>>
<<set $measureResult = [
{ character: "MC", gender: "female", type: "speech", text: "Yeah sure why not. deviancy+1" },
{ character: "MC", gender: "female", type: "image", text: "img/events/bobsqeeze.jpg" },
{ character: "stranger1", gender: "male", type: "speech", text: "These are the best tits I<punc>ve felt to date." },
{ character: "MC", gender: "female", type: "speech", text: "Thanks!" },
{character: "Narrator", gender: "na", type: "choice", text: "You could take this further.",
choices: [
{ text: "Seduce him 35"+$devi, result: [
{ character: "MCs", gender: "female", type: "speech", text: "You know, for a small fee, I<punc>ll let you do more than just touch" },
{ character: "Narrator", gender: "na", type: "narrative", text: "The man stares at you with longing. The tent he<punc>s pitching tells you the answer" },
{ character: "stranger1", gender: "male", type: "speech", text: "Alright lets go" },
{ character: "MCs", gender: "female", type: "speech", text: "Come with me, I live close by..." },
{character: "Narrator", gender: "na", type: "choice", text: "Go together",
choices: [
{ text: "Change locations", type:"transfer", result:"RandomSex",
statChanges: { fitness:+1 }
},
],
},
],
statChanges: { deviancy:+1 }, statRequirements:[{stat:"deviancy",threshold:35},{stat:"usnum",threshold:1}]
}
]}]>>
<<else>>
<<set $measureResult = [
{ character: "stranger1", gender: "male", type: "speech", text: "You got potencial girl but it<punc>ll be a hard pass for me" },
{ character: "Narrator", gender: "na", type: "narrative", text: "He walks off." },
{ character: "MC", gender: "female", type: "speech", text: "Jerk!" }
]>>
<</if>>
<<set $randomConversation = either([
[
{ character: "MC", gender: "female", type: "narrative", text: "You see an ad calling for young attractive waitresses at Del Bistro." },
{ character: "MC", gender: "female", type: "image", text: "img/events/delbistroad.jpeg" },
{ character: "MC", gender: "female", type: "thought", text: "looks like the restaurants thriving." }
],
[
{ character: "MC", gender: "fsmale", type: "narrative", text: "A stranger approaches you" },
{ character: "stranger1", gender: "male", type: "speech", text: "Hey girl ,Im measuring boob size as part of a competition. Can I get your measurement?" },
{character: "Narrator", gender: "na", type: "choice", text: "Do you assist him?",
choices: [
{ text: "Tell him to piss off", result: [
{ character: "MC", gender: "female", type: "speech", text: "No what a rude thing to ask. Piss off!" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You walk off." }
],
},
{ text: "Accept 20"+$devi, result: $measureResult, statRequirements:{"deviancy":20}
}]}]
,
[
{ character: "Narrator", gender: "na", type: "narrative", text: "You see an old lady struggling to lift a package." },
{character: "Narrator", gender: "na", type: "choice", text: "Do you assist her?",
choices: [
{ text: "Help her", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "The box is actually quite heavy and you wonder how she could even move it. fitness+1" }
],
statChanges: { fitness:+1 }
},
{ text: "Ignore it", result: [
{ character: "MC", gender: "female", type: "thought", text: "Why would she buy something she couldn<punc>t carry . deviancy+1" }
],
statChanges: { deviancy:+1 }
}
]
}
],
[
{ character: "MC", gender: "female", type: "narrative", text: "You pass by some strangers chatting." },
{ character: "stranger1", gender: "male", type: "speech", text: "Hey man you hear about that woman who got killed" },
{ character: "stranger2", gender: "female", type: "speech", text: "Yeah dude , nasty stuff. They said the killer carved an M onto her body with surgical precision." },
{ character: "stranger1", gender: "male", type: "speech", text: "Thats gruesome , we better stay safe in these streets man." },
{ character: "stranger2", gender: "female", type: "speech", text: "Yeah the streets aren<punc>t as safe as they used to be." },
],
[ { character: "Narrator", gender: "na", type: "narrative", text: "The silence is almost eerie, as if the world is holding its breath." } ],
[
{ character: "MC", gender: "feme", type: "narrative", text: "A passing stranger talking on the phone mentions Odai body studio opening in the Central District mall" },
{ character: "MC", gender: "female", type: "thought", text: "I could probably get a massage there." }
],
[ { character: "Narrator", gender: "na", type: "narrative", text: "A small smile appears on your face as you recall the time Kofi spilled cake batter all over the kitchen floor." } ],
[ {character: "Narrator", gender: "na", type: "choice", text: "You hear soft moans coming from an alleyway.",
choices: [
{ text: "Take a look", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "To your surprise you see one of your neighbors having rough anal sex in the alleyway. deviancy+1" },
{ character: "Narrator", gender: "na", type: "video", text: "img/events/public1.webm" },
], statChanges: { deviancy:+1 }}
]
}
],
[
{ character: "Narrator", gender: "na", type: "narrative", text: "You see the owner of the general store escorting a customer out the front door. You notice something weird on her face." },
{character: "Narrator", gender: "na", type: "choice", text: "Take a closer look.",
choices: [
{ text: "Look", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "The womans face is covered in cum. She continues walking as if her face is normal" },
{ character: "Narrator", gender: "na", type: "video", text: "img/events/slutwalk.webm" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You see Kyle waving at you in the distance" },
{ character: "kyle", gender: "male", type: "speech", text: "Heeey $firstname! We git discounts on food, just come see me!" }
],
statChanges: { deviancy:+1 }}
]
} ],
[
{ character: "Narrator", gender: "na", type: "narrative", text: "You feel a quick sharp smack reverberate through your bum. You turn around to find a young man sporting a mischievious grin." },
{character: "Narrator", gender: "na", type: "choice", text: "How do you react?",
choices: [
{ text: "Slap him", result: $slapResult},
{ text: "Shake it invitingly", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "He holds you close and squeezes your ass" },
{ character: "Narrator", gender: "na", type: "video", text: "img/events/bootyslap2.mp4" }
], statChanges: { deviancy:+1 }}
]
} ]
]
)>>
<</nobr>>
<<button "Go Home" "Apartment">><</button>>
<div id="chat-container"></div>
<<script>>
$(document).ready(function() {
console.log(State.variables.randomConversation)
$("#chat-container").html(window.renderConversation(State.variables.randomConversation));
});
<</script>>
<<set $places = [
{ name: "Bus", image: "img/locations/busloc.jpg", passage: "bus", visible: true },
{ name: "Del Bistro Restaurant", image: "img/locations/DelBistroloc.png", passage: "Del Bistro Restaurant", visible: true },
{ name: "Convenience Store", image: "img/locations/generalstoreloc.png", passage: "General Store", visible: true },
{ name: "Car", image: "img/locations/car.jpg", passage: "Car", visible: false }, // Conditionally added
{ name: "Park", image: "img/locations/parkloc.jpg", passage: "Park", visible: true },
{ name: "Upper District", image: "img/locations/upperdloc.jpg", passage: "Upper District", visible: false},
{ name: "Pink School", image: "img/locations/pinkschoolloc.jpg", passage: "Pink School", visible: false },
{ name: "Clinic", image: "img/locations/clinicloc.jpg", passage: "Clinic", visible: false },
{ name: "Mall", image: "img/locations/mallloc.jpg", passage: "Mall", visible: true },
{ name: "Landlord Apartment", image: "img/locations/landlordloc.jpg", passage: "Landlord apartment", visible: false},
{ name: "Cab", image: "images/cab.jpg", passage: "cab", visible: false },
{ name: "Sunlit Beach", image: "place3.jpg", passage: "Beach", visible: false },
{ name: "Forrest", image: "place3.jpg", passage: "Forrest", visible: false }
] >>
<div id="game-world-grid"></div>
<<script>>
$(document).ready(function() {
// Function to render a single place
window.renderPlace = function renderPlace(place) {
if (place.visible) {
return `
<div class="place-block">
<a href="javascript:void(0);" data-passage="${place.passage}">
<img src="${place.image}" alt="${place.name}" style="object-fit: cover; min-height:250px;"/>
<div class="description">${place.name}</div>
</a>
</div>
`;
}
return ""; // Return empty if not visible
};
// Function to render all places as HTML, only updating if necessary
window.updatePlaces = function updatePlaces() {
console.log("Updating places...");
const html = State.variables.places.map(window.renderPlace).join("");
$("#game-world-grid").html(html);
};
// Initial render of places
window.updatePlaces();
// Ensure click handler fires only once
$(document).off("click", ".place-block a").on("click", ".place-block a", function (event) {
event.preventDefault(); // Stop default behavior
event.stopPropagation(); // Stop event bubbling
const passage = $(this).attr("data-passage");
console.log("Navigating to passage:", passage);
if (!passage) {
console.error("Error: Passage name is undefined!");
return;
}
if(passage.includes("District")){
State.variables.destination = passage;
Engine.play("Walk");
}else{
Engine.play(passage);
}
});
});
<</script>>
<<button "Leave" "Red Light District">><</button>><<button "Leave" "Red Light District">><</button>><<button "Leave" "Red Light District">><</button>><<button "Leave" "Upper District">><</button>> <<nobr>>
<<set $sleepval to random( 7)>>
<<set $checkweekday=$weekday>>
<<script>>
window.advanceTime(2);
<</script>>
<<if $weekday!=$checkweekday>>
<<set $exercised=0>>
<</if>>
<<switch $bodyShape>>
<<case "large">>
<<set $hungeradd = 50>>
<<case "overw">>
<<set $hungeradd = 35>>
<<case "fit">>
<<set $hungeradd = 20>>
<<case "sexy">>
<<set $hungeradd = 25>>
<<default>>
<<set $hungeradd = 0>>
<</switch>>
<<button "Go to Patron Zone" "PatronPassage">><</button>>
<<if $hunger+$hungeradd>100>>
<<set $hunger = 100>>
<<else>>
<<set $hunger+=$hungeradd>>
<</if>>
<<if $fitness >= 85 && $boobjob === 1 && $bodyShape != "sexy">>
<<button "Transform" "transformation3">><</button>>
<<elseif $fitness >= 65 and $bodyShape != "fit" >>
<<button "Transform" "transformation2">><</button>>
<<elseif $fitness >= 25 and $bodyShape != "overw" and $bodyShape != "fit">>
<<button "Transform" "transformation1">><</button>>
<<else>>
<</if>>
<<if $fitness >= 85 && $boobjob === 1 && $bodyShape != "sexy">>
<<button "Transform backward" "transformation3">><</button>>
<<elseif $fitness >= 25 and $bodyShape != "overw" and $bodyShape === "fit">>
<<button "Transform backward" "transformation1">><</button>>
<<elseif $fitness < 25 and $bodyShape != "overw" and $bodyShape != "fit" and $bodyShape != "large">>
<<button "Transform backward" "transformation3">><</button>>
<<else>>
<</if>>
<<if $energy+35>100>>
<<set $energy = 100>>
<<elseif $hunger>80>>
<<set $energy+=35>>
<<else>>
<<set $energy+=70>>
<</if>>
<<if $hunger>80>>
You are starving and get a horrible night of sleep. +35 energy
<<else>>
You lay you head down for a peacful night of sleep. +70 energy
<</if>>
<</nobr>>
<<if $deviancy < 45>>
<img id="sleepImage" src=""/>
<script>
$sleepval = Math.floor(Math.random() * 6)+1;
document.getElementById("sleepImage").src = "img/sleep/normal" + $sleepval + ".gif";
</script>
<</if>>
<<if $deviancy > 60>>
<img id="sleepImage" src=""/>
<script>
$sleepval = Math.floor(Math.random() *4)+3;
document.getElementById("sleepImage").src = "img/sleep/dirty" + $sleepval + ".gif";
</script>
<</if>>
<<button "Wake Up">>
<<goto "Bedroom">>
<</button>>
<div class="stat-container">
<div class="stat">
<svg class="stat-svg">
<path class="stat-bg" d="M5,25 A20,20 0 0,1 45,25" />
<path class="stat-fill" d="M5,25 A20,20 0 0,1 45,25" id="fitness-bar" />
</svg>
<div class="stat-value" id="fitness-value"><<print $fitness>></div>
<div><i class="fas fa-dumbbell"></i></div>
</div>
<div class="stat">
<svg class="stat-svg">
<path class="stat-bg" d="M5,25 A20,20 0 0,1 45,25" />
<path class="stat-fill" d="M5,25 A20,20 0 0,1 45,25" id="deviancy-bar" />
</svg>
<div class="stat-value" id="deviancy-value"><<print $deviancy>></div>
<div class="staticon">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="26px" height="26px" viewBox="0 0 36 36" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><circle fill="#AA8DD8" cx="18" cy="18" r="18"/><path fill="#AA8DD8" d="M10 4C7.42 4 4.369 1.534 3.414.586A1.998 1.998 0 0 0 1.235.153A1.998 1.998 0 0 0 0 2c0 3.459 1.672 10 8 10a2 2 0 0 0 1.789-1.106l2-4A1.999 1.999 0 0 0 10 4zM34.766.153a1.996 1.996 0 0 0-2.18.434C31.7 1.472 28.589 4 26 4a1.999 1.999 0 0 0-1.789 2.895l2 4A2 2 0 0 0 28 12c6.328 0 8-6.541 8-10c0-.809-.487-1.538-1.234-1.847z"/><path fill="#553986" d="M27.335 25.629a.501.501 0 0 0-.635-.029c-.039.029-3.922 2.9-8.7 2.9c-4.766 0-8.662-2.871-8.7-2.9a.5.5 0 0 0-.729.657C8.7 26.472 11.788 31.5 18 31.5s9.301-5.028 9.429-5.243a.499.499 0 0 0-.094-.628zm-11.628-7.336C12.452 15.038 7.221 15 7 15a1 1 0 0 0-.001 2c.029 0 1.925.022 3.983.737c-.593.64-.982 1.634-.982 2.763c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-.174-.019-.34-.037-.507c.013 0 .025.007.037.007a.999.999 0 0 0 .707-1.707zM29 15c-.221 0-5.451.038-8.707 3.293A.999.999 0 0 0 21 20c.013 0 .024-.007.036-.007c-.016.167-.036.333-.036.507c0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-1.129-.389-2.123-.982-2.763A13.928 13.928 0 0 1 29.002 17A1 1 0 0 0 29 15z"/></svg></div>
</div>
<div class="stat">
<svg class="stat-svg">
<path class="stat-bg" d="M5,25 A20,20 0 0,1 45,25" />
<path class="stat-fill" d="M5,25 A20,20 0 0,1 45,25" id="beauty-bar" />
</svg>
<div class="stat-value" id="beauty-value"><<print $beauty>></div>
<div>
<svg xmlns="http://www.w3.org/2000/svg xmlns:xlink="http://www.w3.org/1999/xlink" height="26px" width="26px" version="1.1" id="Layer_1" viewBox="0 0 511.999 511.999" xml:space="preserve">
<path style="fill:#EC589B;" d="M503.383,270.65c-38.314,35.12-82.648,62.612-130.6,81.304 c-27.032,10.535-55.213,18.278-84.118,23.011c-10.822,1.769-21.736,2.665-32.662,2.665c-10.925,0-21.839-0.896-32.662-2.665 c-40.095-6.571-78.811-18.921-114.976-36.487C72.211,320.9,38.573,298.119,8.634,270.661c-0.011-0.011-0.023-0.011-0.023-0.011 s0,0,0.011-0.012l114.723-111.139c28.71-27.802,72.366-33.225,106.992-13.281l25.665,14.774l25.654-14.774 c34.638-19.944,78.294-14.521,106.992,13.281L503.383,270.65z"/>
<path style="fill:#D3468D;" d="M135.534,255.948c0,0,85.456,6.29,117.339-25.593C252.873,230.355,165.732,225.75,135.534,255.948z"/>
<path style="fill:#EFDFDE;" d="M329.01,255.948l-27.22-14.328c-28.662-15.088-62.919-15.088-91.581,0l-27.22,14.328l27.22,14.328 c28.662,15.088,62.919,15.088,91.581,0L329.01,255.948z"/>
<g>
<path style="fill:#D3468D;" d="M372.783,351.953c-27.032,10.535-55.213,18.278-84.118,23.011 c-10.822,1.769-21.736,2.665-32.662,2.665c-10.925,0-21.839-0.896-32.662-2.665c-40.095-6.571-78.811-18.921-114.976-36.487 C72.211,320.9,38.573,298.119,8.634,270.661c2.401,1.379,168.466,96.124,364.091,81.292H372.783z"/>
<path style="fill:#D3468D;" d="M256.003,160.993L256.003,160.993c-1.624,11.167-12.396,18.53-23.417,16.103 c-21.117-4.649-39.787-22.643-75.511,2.255c-56.42,39.325-147.292,90.746-148.452,91.286l114.723-111.139 c28.71-27.802,72.366-33.225,106.992-13.281L256.003,160.993z"/>
</g>
<path style="fill:#F67BB8;" d="M256.004,160.993L256.004,160.993c1.624,11.167,12.396,18.53,23.417,16.103 c21.117-4.649,39.787-22.643,75.511,2.255c56.42,39.325,147.292,90.746,148.452,91.286L388.661,159.498 c-28.71-27.802-72.366-33.225-106.992-13.281L256.004,160.993z"/>
<path d="M111.298,255.948c0,4.758,3.857,8.616,8.616,8.616h60.946l25.335,13.337c15.592,8.208,32.698,12.312,49.803,12.312 c17.106,0,34.211-4.105,49.805-12.312l25.335-13.337h60.946c4.76,0,8.616-3.858,8.616-8.616s-3.857-8.616-8.616-8.616H331.14 l-25.335-13.337c-31.186-16.417-68.424-16.416-99.607,0l-25.335,13.337h-60.946C115.155,247.332,111.298,251.19,111.298,255.948z M214.222,249.243c26.159-13.77,57.394-13.771,83.554,0l12.736,6.705l-12.736,6.704c-26.16,13.77-57.393,13.771-83.554,0 l-12.736-6.704L214.222,249.243z"/>
<path d="M428.006,315.669c-43.56,25.535-90.911,42.624-140.738,50.793c-20.749,3.401-41.788,3.401-62.537,0 c-75.736-12.416-145.895-45.567-203.481-96.051l108.096-104.718c8.916-8.637,19.405-14.964,31.175-18.805 c4.524-1.476,6.994-6.34,5.518-10.865c-1.477-4.523-6.334-6.995-10.865-5.518c-14.281,4.661-27.005,12.335-37.819,22.81 L2.62,264.466c-1.704,1.652-2.653,3.934-2.619,6.307c0.032,2.374,1.043,4.629,2.793,6.232 c61.303,56.194,137.084,93.009,219.152,106.462c11.299,1.853,22.677,2.779,34.055,2.779c11.378,0,22.757-0.926,34.056-2.779 c51.925-8.512,101.272-26.321,146.666-52.932c4.105-2.407,5.482-7.686,3.077-11.791C437.389,314.64,432.11,313.263,428.006,315.669z "/>
<path d="M509.379,264.466L394.644,153.315c-31.297-30.317-79.526-36.306-117.286-14.566L256,151.046l-21.359-12.297 c-12.159-7.001-25.386-11.247-39.313-12.621c-4.731-0.468-8.954,2.994-9.421,7.729c-0.466,4.736,2.993,8.953,7.729,9.421 c11.477,1.132,22.381,4.633,32.407,10.405l25.658,14.773c2.661,1.531,5.937,1.533,8.598,0l25.657-14.773 c31.131-17.924,70.893-12.987,96.697,12.009l108.095,104.717c-12.876,11.279-26.527,21.805-40.679,31.363 c-3.944,2.663-4.981,8.019-2.32,11.963c1.665,2.465,4.382,3.795,7.149,3.795c1.659,0,3.335-0.478,4.814-1.476 c17.38-11.737,34.032-24.875,49.494-39.048c1.749-1.604,2.76-3.859,2.793-6.232S511.084,266.118,509.379,264.466z"/>
</svg>
</div>
</div>
<div class="stat">
<svg class="stat-svg">
<path class="stat-bg" d="M5,25 A20,20 0 0,1 45,25" />
<path class="stat-fill" d="M5,25 A20,20 0 0,1 45,25" id="fitness-bar" />
</svg>
<div class="stat-value" id="fitness-value"><<print $energy>></div>
<div class="staticon"><i class="fas fa-bolt"></i></div>
</div>
</div>
<<<<nobr>>
<<set $run = [
{ character: "Jim", gender: "male", type: "speech", text: "$firstname, what are you doing?" },
{ character: "MC", gender: "female", type: "speech", text: "I Think I left my stove on at home ... bye"},
{ character: "Jim", gender: "male", type: "speech", text: "Ok well uh, you know where to find me" }
]>>
<<if $bistroLevel==2>>
<<set $bistroset=0>>
<<else>>
<<set $bistroset=1>>
<</if>>
<<set $MCjblowjob = [
{ character: "Jim", gender: "asd", type: "narrative", text: "He unbuckled his belt, his pants dropping to the floor, his hard cock springing free. You sink to your knees, looking up at him." },
{ character: "MCs", gender: "female", type: "speech", text: "Look at that big fat cock, sir." },
{ character: "Jim", gender: "male", type: "speech", text: "You little slut. You want my cock in your mouth, don<punc>t you?" },
{ character: "MCs", gender: "female", type: "speech", text: "Mmm, yes please, sir. I want to taste your big fat cock." },
{ character: "Jim", gender: "ad", type: "narrative", text: "You start sucking his penis." },
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/mc-jim-bj-1.webm" },
{ character: "Jim", gender: "male", type: "speech", text: "Fuck, you<punc>re a good little cocksucker, aren<punc>t you? Look at you, taking my big cock like a champ." },
{character: "Narrator", gender: "na", type: "choice", text: "You feel emboldened by his words...",
choices: [
{ text: "Deepthroat"+$devi+"25", result: [ { character: "image", gender: "fw", type: "video", text: "img/events/mc-jim-bj-2.webm" }], statChanges: { deviancy:3 },statRequirement: { stat: "deviancy", threshold: 25 }}
]},
{ character: "MC", gender: "fasd", type: "narrative", text: "You could feel his cock <animate>throbbing</animate> in your mouth, his pre-cum <animate>leaking</animate> out, coating your tongue. You suck harder, cupping his balls, feeling them tighten." },
{ character: "Jim", gender: "male", type:"speech", text: "Oh fuck, you<punc>re making me want to cum, you little slut. You want me to cum in your mouth, don<punc>t you?" },
{ character: "MCs", gender: "female", type: "speech", text: "Mmm-hmm. I want to taste your cum, sir. I want to swallow every drop." },
{ character: "Jim", gender: "ad", type: "narrative", text: "He groaned, his body tensing, his cock <animate>pulsing</animate> in your mouth, his <animate>hot cum</animate> filling your throat. IYou swallowed it all, licking your lips, looking up at him." },
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/mc-jim-bj-3.webm" },
{ character: "MCs", gender: "female", type: "speech", text: "Mmm, thank you, sir. That was delicious. But I want more. I want your cock in my pussy next time." },
{ character: "MC", gender: "fasd", type: "narrative", text: "End of content. Please consider supporting the game on Patreon" }
]>>
<<if $fitness>=25>>
<<set $persuade = [
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ve been working hard Jim, and I would ...Really..appreciate the increase." },
{character:"narrator", gender:"na",type:"narrative", text:"You bend your body forward, resting your hands on the table to show off your cleavage."},
{ character: "ss", gender: "mae", type: "image", text: "img/events/MC-Jim-"+$hairColor+"-"+$bodyShape+"-convince.png" },
{ character: "Jim", gender: "male", type: "speech", text: "A promotion, you say? And what makes you think you<punc>re ready for that?" },
{ character: "Jim", gender: "msde", type: "narrative", text: "He noticed, his eyes flicking down to your chest, lingering there." },
{ character: "Jim", gender: "male", type: "speech", text: "$firstname, what are you doing?" },
{ character: "MC", gender: "female", type: "speech", text: "I<punc>m just trying to show you that I<punc>m ready for more, sir. I<punc>m ready to take on more... responsibilities"},
{ character: "Jim", gender: "malsde", type: "narrative", text: "He swallowed hard, his eyes never leaving your chest as you leaned forward, giving him a better view." },
{ character: "Jim", gender: "male", type: "speech", text: "You<punc>re playing a dangerous game, $firstname." },
{ character: "MC", gender: "female", type: "speech", text: "Is it working, sir? Am I making a convincing argument?" },
{ character: "Jim", gender: "malsde", type: "narrative", text: "He stood up, walking around his desk, his eyes never leaving your body. You look down and spot his erection. He was clearly aroused." },
{ character: "image", gender: "fw", type: "image", text: "img/characters/jim-erectionc.jpg" },
{ character: "Jim", gender: "male", type: "speech", text: "You<punc>re a clever one, aren<punc>t you? Alright, $firstname. I<punc>ll consider your request. But I want to see more of your... dedication." },
{ character: "MC", gender: "female", type: "speech", text: "I<punc>m glad to hear that, sir. I<punc>m more than willing to... demonstrate my dedication." },
{ character: "Jim", gender: "malsdse", type: "narrative", text: "He locks the door, the sound of the click echoing in the room. You have him where you want him. Now, its time to seal the deal." },
{character: "Narrator", gender: "na", type: "choice", text: "He unzips his pants freeing his cock in front of your face...",
choices: [
{ text: "Say ahh"+$devi+"3", result: $MCjblowjob, statChanges: { deviancy:3,bistroLevel:$bistroset }, statRequirement: { stat: "deviancy", threshold: 20 }}
,{ text: "Run", result: $run, statChanges: { deviancy:0, bistroLevel:0 },statRequirement: { stat: "deviancy", threshold: 0 }}]}
]>>
<<else>>
<<set $persuade = [
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ve been working hard Jim, and I would ...Really..appreciate the increase." },
{character:"narrator", gender:"na",type:"narrative", text:"You bounce flirtatiously hoping he understands the message."},
{ character: "Jim", gender: "msdale", type: "narrative", text: "Listen $firstName, I<punc>m sorry, but I can<punc>t give you a promotion right now. I<punc>m trying to balance my budget. If you improved your <animate>fitness</animate> and attracted more customers, I<punc>d give you a raise." },
{ character: "MC", gender: "female", type: "speech", text: "OK Jim I get it. Bye" }
]>>
<</if>>
<<set $promotion = [
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ve been working here for quite a while now, sir. And I feel like the customers really like me so I want a pay increase." },
{ character: "Jim", gender: "male", type: "narrative", text: "He leaned back in his chair, his eyes scanning you from head to toe, a slow smile spreading across his face." },
{ character: "Jim", gender: "male", type: "speech", text: "A promotion, you say? And what makes you think you<punc>re ready for that?" },
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ve proved myself, sir. I<punc>ve gone above and beyond what<punc>s been asked of me." },
{character: "Narrator", gender: "na", type: "choice", text: "He<punc>s tentative but not convinced, maybe you can...",
choices: [
{ text: "Persuade him "+$devi+"10", result: $persuade, statChanges: { deviancy:10 },statRequirement: { stat: "deviancy", threshold: 10 }}
,{ text: "Leave"}]}
]>>
<<if $jim<1 or $timeCounter===4>>
<<if $jim<1>>
<<set $deviancy+=5>>
<</if>>
<<set $jim+=1>>
<<script>> window.advanceTime(); <</script>>
Deviancy +5
<<set $conversation3=[
{ character: "Jim", gender: "male", type: "speech", text: "Keep your mouth open slut!" },
{ character: "Candys", gender: "trans", type: "speech", text: "Im thirsty daddy!" },
{ character: "Jim", gender: "male", type: "speech", text: "Oh!" },
{ character: "MCs", gender: "female", type: "thought", text: "So much cum, wow" },
{ character: "MC", gender: "feemale", type: "video", text: "img/events/emma-jim-bj-2.webm" },
{ character: "Candys", gender: "trans", type: "speech", text: "I love tasting your huge candy cane daddy." },
{ character: "Candys", gender: "trans", type: "speech", text: "Does that mean i get more overtime ?" },
{ character: "Jim", gender: "male", type: "speech", text: "Yeah overtime , and heres $500 extra" },
{ character: "Candys", gender: "trans", type: "narrative", text: "Candy starts sucking on Jims sensitive cock making him moan" },
{ character: "MC", gender: "fem", type: "narrative", text: "Deviancy +5" },
]>>
<<set $conversation2=[
{ character: "Jim", gender: "male", type: "speech", text: "Keep sucking Baby!" },
{ character: "MC", gender: "feemale", type: "image", text: "img/events/emma-jim1.jpg" },
{ character: "Candys", gender: "trans", type: "speech", text: "<animate>hugh</animate> <animate>huhl</animate> <animate>choke</animate>" },
{ character: "Jim", gender: "male", type: "speech", text: "Youre my favorite slut, you know that" },
{ character: "MC", gender: "female", type: "thought", text: "Oh my god that bitch!!! " },
{ character: "MC", gender: "feemale", type: "video", text: "img/events/emma-jim-bj-1.webm" },
{ character: "Candys", gender: "trans", type: "speech", text: "<animate>gluch</animate> <animate>gockh</animate> <animate>spit</animate>" },
{ character: "MC", gender: "female", type: "thought", text: "So this is why shes been getting all the overtime. I cant fucking believe it..." },
{ character: "Candy", gender: "trans", type: "narrative", text: "Your thoughts betray the unrelenting arousal you feel watching the exchange" },
{ character: "MCs", gender: "female", type: "thought", text: "Jims cock is so big..Maybe I should... " },
{character: "Narrator", gender: "na", type: "choice", text: "This situation is really turning you on, do you continue watching or...",
choices: [
{ text: "Keep Watching", result: $conversation3, statChanges: { deviancy:5 }}
,{ text: "Leave"}]}]>>
<<set $conversation1 = [
{ character: "MC", gender: "female", type: "thought", text: "His door is slightly open, what are those weird noises?" },
{character: "Narrator", gender: "na", type: "choice", text: "You hear choking and swallowing from the other side of the door. do you...",
choices: [
{ text: "Peek", result: $conversation2},
]
}
]
>>
<<elseif $timeCounter<4>>
<<set $conversation1=[
{ character: "MC", gender: "female", type: "narrative", text: "You walk into Jims office and find him sitting at his computer " },
{ character: "MC", gender: "feemle", type: "image", text: "img/characters/Jim-office.jpeg" },
{ character: "Jim", gender: "male", type: "speech", text: "Hi $firstname , How can I help you?" },
{character: "Narrator", gender: "na", type: "choice", text: "What did you want to discuss with Jim?",
choices: [
{ text: "Promotion", result: $promotion}
]
}
]>>
<<elseif $timeCounter===4>>
<<set $conversation1 = [
{ character: "MC", gender: "female", type: "narrative", text: "His door is slightly open, what are those weird noises?" },
{character: "Narrator", gender: "na", type: "choice", text: "You hear choking and swallowing from the other side of the door. do you...",
choices: [
{ text: "Peek", result: $conversation2},
]
}
]
>>
<<elseif $timeCounter>4>>
<<set $conversation1 = [
{ character: "MC", gender: "female", type: "thought", text: "Looks like he isn<punc>t here. I should come in the day time." },
]>>
<</if>>
<div id="chat-container2"></div>
<</nobr>>
<<script>>
$(document).ready(function() {
$("#chat-container2").html(window.renderConversation(State.variables.conversation1));
});
<</script>>
<<link "Leave The Office">> <<goto "Del Bistro Restaurant">> <</link>><<if $kofi < 1>>
<<set $kofi +=1>>
<<set $kconversation1 = [
{ character: "MC", gender: "female", type: "thought", text: "I swear if I hear one more complaint tonight, I<punc>m walking out. Just five minutes of peace, that<punc>s all I need." },
{ character: "Kofi", gender: "male", type: "speech", text: "Yuh look stressed, sis. Dem customers giving yuh trouble again?" },
{ character: "MC", gender: "female", type: "speech", text: "Nah. Jim asked me to clock out early again." },
{ character: "Kofi", gender: "male", type: "speech", text: "Dat man nuh know wah he want, mi swear." },
{ character: "MC", gender: "female", type: "thought", text: "At least Kofi always makes me laugh. Kitchen<punc>s a warzone, but somehow he never lets it get to him." },
{ character: "MC", gender: "female", type: "speech", text: "Right! I also got student loans I gotta pay." },
{ character: "Kofi", gender: "male", type: "speech", text: "Mi tell yuh what. Mi save some extra bread fa ya." },
{ character: "MC", gender: "female", type: "speech", text: "You<punc>re a lifesaver, Kofi. If I pass out on shift, you get my paycheck." },
{ character: "Kofi", gender: "male", type: "speech", text: "Gyal, mi might need a hug fi dat." },
{ character: "MC", gender: "female", type: "speech", text: "Alright, but no funny stuff like last time" },
{ character: "Kofi", gender: "male", type: "speech", text: "Mi only jokin<punc> last. Now come ere" }
]>>
<<elseif $timeCounter<=3>>
<<set $kconversation1 = [
{ character: "MC", gender: "female", type: "thought", text: "Lets see what kofis up to" },
{ character: "Kofi", gender: "male", type: "speech", text: "Aye $firstname today da kitchen is swamped can ya come back inna da evening?" },
{ character: "MC", gender: "female", type: "speech", text: "No problem Kofi! Catch ya later!." },
]>>
<<elseif $timeCounter>4 >>
<<set $kconversation1 = [
{ character: "MC", gender: "female", type: "thought", text: "Lets see what kofis up to" },
{ character: "MC", gender: "female", type: "speech", text: "Ahh hes not here." },
{ character: "MC", gender: "female", type: "thought", text: "I should come back in the evening." },
]>>
<<elseif $usnum===1>>
<<set $kconversation1 = [
{ character: "MC", gender: "fde", type: "narrative", text: "Kofi checks you out as you walk in." },
{ character: "Kofi", gender: "male", type: "speech", text: "Aye $firstname ya looking good babe. Especially ya upper portion." },
{ character: "MC", gender: "female", type: "speech", text: "Thanks Kofi. Im glad you like them." },
]>>
<<elseif $usnum===2>>
<<set $kconversation1 = [
{ character: "MC", gender: "fde", type: "narrative", text: "kofi checks you out as you walk in." },
{ character: "Kofi", gender: "male", type: "speech", text: "Aye $firstname ya boobs are looking absolutely massive babe. ya back must be killing ya" },
{ character: "MC", gender: "female", type: "speech", text: "Yeah sometimes the weight is a little much." },
{ character: "Kofi", gender: "male", type: "speech", text: "Come here and let Kofi give ya a massage" },
]>>
<<else>>
<<set $kconversation1 = [
{ character: "Kofi", gender: "male", type: "speech", text: "Aye $firstname ya eat yet?" },
]>>
<</if>>
<div id="kitchat-container"></div>
<<script>>
$(document).ready(function() {
$("#kitchat-container").html(window.renderConversation(State.variables.kconversation1));
});
<</script>>
<<if $time==="Evening">>
[[Hug Kofi |hugkofi]]
<</if>>
[[Leave| End shift]]
<<nobr>>
<div id="khugchat-container"></div>
<<set $res1 to []>>
<<set $kofi +=1>>
<<set $sceneBuild = "MC"+"-"+"kofi"+"-"+$hairColor+"-"+$bodyShape+"-">>
<<set $res4 = [
{ character: "mc", gender: "fege", type: "narrative", text: "Kofi<punc>s hands, calloused from years of chopping vegetables and handling hot pans, were gentle yet firm as they slipped beneath the waistband of your pants, cupping my ass." },
{ character: "kofi", gender: "male", type: "speech", text: "Yuh ass is like a ripe mango, sweetheart. I just gotta touch it, feel it, taste it." },
{ character: "mc", gender: "feaae", type: "narrative", text: "He slides a finger down your crack, finding your wet pussy. You gasped, hips bucking forward, seeking more." },
{ character: "ss", gender: "mae", type: "video", text: "img/events/mc-kofi-finger-sexy.webm" },
{ character: "kofi", gender: "male", type: "speech", text: "Mmm, yuh so wet, sweetheart. Yuh like dat, don<punc>t yuh? Yuh like when I touch yuh like dis." },
{ character: "mc", gender: "fewle", type: "narrative", text: "He rubbed your clit in slow circles, his thick finger slipping inside me, pumping in and out." },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby. Ride my finger. Show me how yuh like it." },
{ character: "mc", gender: "fewe", type: "narrative", text: "You moaned, your body moving in rhythm with his hand, feeling the pressure build inside." },
{ character: "kofi", gender: "male", type: "speech", text: "Yuh ready to cum, sweetheart? Yuh ready to squirt all over my hand?" },
{ character: "MCs", gender: "female", type: "speech", text: "Yes! Kofi..." },
{ character: "ss", gender: "mae", type: "image", text: "img/events/"+$sceneBuild+"fj"+".png" },
{ character: "kofi", gender: "mawle", type: "narrative", text: "He sped up, his finger curling up, pressing against that sweet spot inside me. I screamed, your body convulsing, your pussy pulsing, your cum dripping down his hand." },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby. Dat<punc>s it. Yuh mine now, yuh hear? Mine." }
]>>
<<set $res5 = [
{ character: "mc", gender: "fewe", type: "narrative", text: "Kofi<punc>s cock was massive, a true monster, the biggest I had ever seen. I reached out, wrapping your small hand around his thick shaft, your fingers barely able to meet." },
{ character: "MCs", gender: "female", type: "speech", text: "Jesus, Kofi... you<punc>re... you<punc>re <animate>enormous</animate>!" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/mc-kofi-hj1.webm" },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s a Jamaican cock, baby. You ain<punc>t seen nothin<punc> like dis before, have you?" },
{ character: "mc", gender: "femadle", type: "narrative", text: "You start to stroke him, your hand gliding up and down his length, feeling the veins <animate>pulse</animate> beneath your touch. Every <animate>throb</animate> of his penis releasing more and more precum, which you used as lubricant. He was so hard, so hot." },
{ character: "kofi", gender: "madle", type: "narrative", text: "He let out a low moan, his hips thrusting forward, fucking your hand. precum squirted out like a cumshot." },
{ character: "ss", gender: "mae", type: "image", text: "img/events/"+$sceneBuild+"hj"+".png" },
{ character: "kofi", gender: "male", type: "speech", text: "Dat feels so good, baby. Yuh hand on my cock, dat<punc>s heaven." },
{ character: "mc", gender: "femadse", type: "narrative", text: "You could feel his body tense, his cock swell in your hand. He was close." },
{ character: "kofi", gender: "male", type: "speech", text: "I<punc>m gonna cum, baby. I<punc>m gonna cum all over yuh hand." },
{ character: "MCs", gender: "female", type: "speech", text: "Do it, Kofi. Cum for me. I want to feel it." },
{ character: "ss", gender: "mae", type: "video", text: "img/events/mc-kofi-hj2.webm" },
{ character: "kofi", gender: "masdle", type: "narrative", text: "He groaned, his body <animate>shaking</animate>, his cock <animate>pulsing</animate> in your hand, his hot cum spilling out, coating your fingers." },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby..." }
]>>
<<set $res6 = [
{ character: "mc", gender: "female", type: "narrative", text: "Looking up at Kofi, you could see his eyes filled with desire, his cock <animate>throbbing</animate> in your hand. You couldn<punc>t wait any longer. Leaning forward, your tongue darts out to <animate>taste</animate> the head of his cock, tasting the salty pre-cum." },
{ character: "MCs", gender: "female", type: "speech", text: "Mmm, you taste good, Kofi." },
{ character: "ss", gender: "mae", type: "video", text: "img/events/mc-kofi-bj1.webm" },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby. Suck your cock. Show me what yuh can do." },
{ character: "mc", gender: "fese", type: "narrative", text: "You open your mouth, taking him in, feeling his thickness <animate>stretch</animate> your lips. You relaxed your jaw, taking him deeper, feeling him hit the back of your throat." },
{ character: "ss", gender: "mae", type: "image", text: "img/events/"+$sceneBuild+"bj"+".png" },
{ character: "kofi", gender: "msle", type: "narrative", text: "He groaned, his hands tangling in your hair, guiding your head, <animate>fucking</animate> your mouth." },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby. Take it all. Yuh can take it, I know yuh can." },
{ character: "mc", gender: "fesale", type: "narrative", text: "You suck harder, your hand cupping his balls, feeling them tighten. He was close." },
{ character: "kofi", gender: "male", type: "speech", text: "I<punc>m gonna cum, baby. I<punc>m gonna cum down yuh throat." },
{ character: "ss", gender: "mae", type: "video", text: "img/events/mc-kofi-bj2.webm" },
{ character: "MCs", gender: "female", type: "speech", text: "Mmm-hmm." },
{ character: "kofi", gender: "sle", type: "narrative", text: "He groaned, his body <animate>shaking</animate>, his cock <animate>pulsing</animate> in your mouth, his hot cum filling your throat." },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby. Swallow it all. Dat<punc>s a good girl." }
]>>
<<set $kofisex = [
{ character: "mc", gender: "feme", type: "narrative", text: "Kofi<punc>s cock was so hard, so ready. Its length pressing against your stomach, throbbing with need. He grabbed your hips, lifting me up, positioning me over him." },
{ character: "kofi", gender: "male", type: "speech", text: "Yuh ready for this, baby? Yuh ready for all of me?" },
{ character: "MCs", gender: "female", type: "speech", text: "Yes... yes, Kofi. I<punc>m ready." },
{ character: "kofi", gender: "male", type: "narrative", text: "He lowered me onto his cock, his thickness stretching your pussy, filling me completely. I gasped, your fingers digging into his shoulders." },
{ character: "kofi", gender: "male", type: "speech", text: "Fuck, you<punc>re so tight, baby. Yuh pussy feels so good." },
{ character: "mc", gender: "female", type: "narrative", text: "He started to move, his hips thrusting up, his cock sliding in and out of your pussy. He was slow at first, letting me adjust to his size." },
{ character: "MCs", gender: "female", type: "speech", text: "Oh God, Kofi... yes... yes..." },
{ character: "kofi", gender: "male", type: "narrative", text: "He sped up, his hips slamming against me, his cock pounding into me. The sound of our bodies slapping together filled the room, along with our moans and grunts." },
{ character: "kofi", gender: "male", type: "speech", text: "Yuh like dat, don<punc>t yuh, baby? Yuh like when I fuck yuh like dis." },
{ character: "MCs", gender: "female", type: "speech", text: "Yes... yes, I love it... I love it..." },
{ character: "kofi", gender: "male", type: "narrative", text: "He reached between your slamming bodies, his thumb finding your clit, rubbing it in tight circles. You felt your body tense, your pussy clamping down on his cock." },
{ character: "kofi", gender: "male", type: "speech", text: "Cum for me, baby. Cum all over your cock." },
{ character: "mc", gender: "female", type: "narrative", text: "I screamed, your body convulsing, your pussy pulsing, your cum dripping down his cock. He groaned, his body shaking, his cock pulsing inside of you, filling you with his hot cum." },
{ character: "kofi", gender: "male", type: "speech", text: "Dat<punc>s it, baby. Yuh mine now. Mine forever." }
]>>
<<set $res7 = [
{ character: "kofi", gender: "male", type: "speech", text: "Theres only so much we can do in da kitchen babe." },
{ character: "MCs", gender: "female", type: "speech", text: "Then lets get out of here." },
{ character: "kofi", gender: "male", type: "speech", text: "Deevay Loper renovatin muh house, check next update." }
]>>
<<switch random(1,2)>>
<<case 1>>
<<set $res2 = [
{ character: "MC", gender: "fem", type: "narrative", text: "Kofis hands begin to roam, rubbing your hips, inching towards your bum. He starts to grind his <animate>throbbing</animate> erection on you, unaware of your hand slipping into his pocket." },
{ character: "kofi", gender: "male", type: "speech", text: "Yuh smell good. Real good..." },
{ character: "MC", gender: "female", type: "speech", text: "Kofi... the hug... its so... sensual..." },
{ character: "MC", gender: "fem", type: "narrative", text: "Your hand closes around some cash in Kofis pocket. your hand squeezes and withdraws it." },
{ character: "MC", gender: "fem", type: "narrative", text: "Money +25 Deviancy +3" },
]>>
<<case 2>>
<<set $res2 = [
{ character: "MCs", gender: "fem", type: "narrative", text: "Kofis hands begin to roam, rubbing your hips, inching towards your bum. He starts to grind his <animate>throbbing</animate> erection on you, unaware of your hand slipping into his pocket." },
{ character: "kofi", gender: "male", type: "speech", text: "Yuh smell good. Real good..." },
{ character: "MCs", gender: "female", type: "speech", text: "Kofi... the hug... its so... sensual..." },
{ character: "MCs", gender: "fem", type: "narrative", text: "Your hand closes around Kofis hard BBC" },
{ character: "MCs", gender: "fem", type: "narrative", text: "Money +25 Deviancy +3" },
{ character: "kofi", gender: "male", type: "speech", text: "Naughty gal, If yuh gonna tek from me yuh gonna have to earn it" },
{ character: "MCs", gender: "fale", type: "narrative", text: "He spins you around, pulling you close. You could feel his strong hands on your ass, giving it a firm squeeze." },
{ character: "kofi", gender: "male", type: "speech", text: "You deserve a spanking fa dat." },
{ character: "MCs", gender: "female", type: "narrative", text: "Before you could protest, his hand came down hard on your ass, the sound of the smack echoing through the kitchen." },
{ character: "ss", gender: "mae", type: "video", text: "img/events/mc-spank-"+$bodyShape+".webm" },
{ character: "kofi", gender: "male", type: "speech", text: "You like that, don<punc>t you, ya little minx?" },
{ character: "MCs", gender: "female", type: "speech", text: "Yes... no... I don<punc>t know." },
{ character: "kofi", gender: "male", type: "narrative", text: "He spanked me again, this time his hand lingered, rubbing the sting away. I could feel his hard cock pressing against my ass. I was so turned on, I didn<punc>t care if anyone walked in." },
{ character: "kofi", gender: "male", type: "speech", text: "You<punc>re a naughty girl, aren<punc>t you?" },
{ character: "MCs", gender: "female", type: "speech", text: "Yes... yes, I am." },
{character: "Narrator", gender: "na", type: "choice", text: "Kofi is really into the hug, do you want to take advantage of the situation?",
choices: [
{ text: "Stick your ass out "+$devi+"25", result: $res4, statChanges: { kofi: 1 },statRequirement: { stat: "deviancy", threshold: 25 }},
{ text: "Stroke his BBC "+$devi+"30", result: $res5, statChanges: { kofi: 1 },statRequirement: { stat: "deviancy", threshold: 30 }},
{ text: "Suck his BBC "+$devi+"55", result: $res6, statChanges: { kofi: 1},statRequirement: { stat: "deviancy", threshold: 55 }},
{ text: "Sex "+$devi+"90", result:$res7, statChanges: { deviancy: 3, money:25 },statRequirement: { stat: "deviancy", threshold: 90 }}
]}
]>>
<</switch>>
<<set $normalHug = [
{ character: "MC", gender: "female", type: "speech", text: "Kofi, I've been running around all day, I'm exhausted. Can you give me a hug?" },
{ character: "kofi", gender: "male", type: "speech", text: "Of course, sweetheart. Come here." },
{character: "Narrator", gender: "na", type: "choice", text: "Kofi is really into the hug, do you want to take advantage of the situation?",
choices: [
{ text: "Kiss his chick", result: [
{character: "kofi", gender: "male", type: "speech", text: "Feel free to come find me any time. Kofi+1 +1"+$devi },
], statChanges: { kofi: +1, deviancy:1 }},
{ text: "Slide your hand in his pocket "+$devi+"15", result: $res2, statChanges: { kofi: 1,money:25, deviancy:+3 },statRequirement: { stat: "deviancy", threshold: 15 }},
]}
]>>
<</nobr>>
<<script>>
$(document).ready(function() {
$("#khugchat-container").html(window.renderConversation(State.variables.normalHug))
});
<</script>>
[[Pull away |Restaurant Kitchen]]
<<set $deviancy+=3>>
<<set $money +=25>>
<<set $timeCounter+=1>>
<img class="displayImage" src="img/events/MC-kofi-hug2.jpeg" alt="MC ande kofi hug">
<<set $normalhug = [
{ character: "Kofi", gender: "malre", type: "narrative", text: "Kofi kneads your ass like dough while rubbing his hot erection between your thighs" },
{ character: "Kofi", gender: "male", type: "speech", text: "Me 'ave a little bit a bread fa ya" },
{ character: "MC", gender: "female", type: "speech", text: "Oh, thanks Kofi" },
{ character: "Kofi", gender: "male", type: "speech", text: "Ere ya go" },
]>>
<div id="chat-container"></div>
Money +25
<<script>>
$(document).ready(function() {
$("#chat-container").html(window.renderConversation(State.variables.normalhug));
});
<</script>>
<img class="displayImage" src="img/events/MC-kofi-hug2z.jpeg" alt="MC and kofi hueg">
Deviancy+3
[[Pull away |End shift]]<<linkreplace "Vanilla">>
<<if $fitness < 25>>
<img class="displayImage" src="img/mast/whale.gif" alt="Low Fitness">
low fitness
<<elseif $fitness < 50>>
<img class="displayImage" src="img/mast/normal1.gif" alt="Medium Fitness">
<<elseif $fitness < 70>>
<img class="displayImage" src="img/mast/sexy2.gif" alt="High Fitness">
<<else>>
<img class="displayImage" src="img/mast/sexy4.gif" alt="Peak Fitness">
<</if>>
<</linkreplace>>
<<linkreplace "Use Toys">>
<<if $fitness < 25>>
<img class="displayImage" src="img/mast/whale.gif" alt="Low Fitness">
<<elseif $fitness < 50>>
<img class="displayImage" src=""img/mast/toy/toy2.gif" alt="Medium Fitness">
<<elseif $fitness < 70>>
<img class="displayImage" src=""img/mast/toy/toy1.gif" alt="High Fitness">
<<else>>
<img class="displayImage" src=""img/mast/toy/toy4.gif" alt="Peak Fitness">
<</if>>
<</linkreplace>>
<<link "Finish Up" "Bedroom">><</link>><<nobr>>
<div class="closet-container">
<!-- Left Section: Outfit Selection -->
<div class="closet-left">
<h2>Your Closet</h2>
<p>Pick an outfit type:</p>
<select id="outfitTypeDropdown" class="dropdown"></select>
<div class="outfit-grid" id="outfitGrid">
<!-- Outfit options will be loaded here -->
</div>
<div class="stat-improvements" id="statImprovements"></div>
</div>
<!-- Right Section: Character Preview -->
<div class="closet-right">
<h3>Preview</h3>
<div id="image-journal">
<img class="head-img" src="img/logo1.png" alt="Character">
<img class="upper-img" src="img/logo2.png" alt="Character">
<img class="lower-img" src="img/logo3.png" alt="Character">
</div>
<<print $wornOutfit>>
<<link "Close Your Wardrobe">>
<<goto "Bedroom">>
<</link>>
</div>
</div>
<</nobr>>
<<script>>
$(document).ready(function() {
var outfitDropdown = $("#outfitTypeDropdown");
outfitDropdown.empty(); // Clear existing options
// Ensure State.variables.closet exists and is an object
if (State.variables.closet && typeof State.variables.closet === "object") {
Object.keys(State.variables.closet).forEach(function(category) {
outfitDropdown.append(`<option value="${category}">${category}</option>`);
});
} else {
console.error("State.variables.closet is undefined or not an object!");
}
// Function to update the outfit selection grid
function updateOutfitSelection() {
var outfitType = outfitDropdown.val();
var outfitGrid = $("#outfitGrid");
outfitGrid.empty();
var outfits = State.variables.closet[outfitType] || [];
if (outfits.length === 0) {
console.warn("No outfits found for category:", outfitType);
}
outfits.forEach(function(outfit) {
var $div = $("<div>")
.addClass("outfit-item")
.html(`<img src="img/outfits/${outfit.img}" alt="${outfit.name}"><br>${outfit.name}`)
.on("click", function() {
selectOutfit(outfit, $(this));
window.updateJournal();
});
if(outfit.owned){
outfitGrid.append($div);
}
});
}
// Function to select an outfit and update preview & stats
function selectOutfit(outfit, element) {
State.variables.selectedOutfit = outfit.name;
State.variables.wornOutfit = outfit.imageKey;
State.variables.imagekey = outfit.imageKey;
// Update head image using the existing getCharacterPreview function
$(".head-img").attr("src", getCharacterPreview(outfit));
// Update upper and lower images using the new naming convention:
$(".upper-img").attr("src", `img/outfits/${State.variables.wornOutfit}-${State.variables.bodyShape}-upper-${State.variables.uppershape}.png`);
$(".lower-img").attr("src", `img/outfits/${State.variables.wornOutfit}-${State.variables.bodyShape}-lower-${State.variables.lowershape}.png`);
$("#statImprovements").text(`${outfit.qpointer}`);
// Highlight the selected outfit
$(".outfit-item").removeClass("selected");
element.addClass("selected");
}
// Function to get the correct head image preview
function getCharacterPreview(key) {
// Build the head image string using the naming convention:
// {hairColor}-{bodyShape}-{outfit}.png (if not custom)
State.variables.outfit = `${key.custom ? "" : State.variables.hairColor + "-"}${State.variables.bodyShape}-${key.imageKey}`;
return `img/outfits/${State.variables.outfit}.png`;
}
// Initialize outfit selection on page load
updateOutfitSelection();
// Update outfit selection when the dropdown changes
outfitDropdown.on("change", updateOutfitSelection);
});
<</script>>
<div class="work-container">
<h2>Welcome to Del Bistro</h2>
<<switch $timeCounter>>
<<case 0>>
<p>The sun rises slowly, casting a golden glow over the restaurant. The quiet hum of morning prep work fills the air, and a few early customers sip their coffee. Where do you want to go?</p>
<<case 1>>
<p>The breakfast rush has picked up. The scent of sizzling bacon and fresh pastries fills the air, and waiters move quickly between tables. Where do you want to go?</p>
<<case 2>>
<p>The lunch rush is in full swing. The kitchen is a whirlwind of activity, and the noise of clinking dishes and hurried orders echoes through the restaurant. Where do you want to go?</p>
<<case 3>>
<p>The late afternoon lull has settled in. A few customers linger over their meals, while the staff takes a brief breather before the dinner rush. Where do you want to go?</p>
<<case 4>>
<p>The dinner is settling down with minor chatter with chatter, and the kitchen is quiet. Where do you want to go?</p>
<</switch>>
<div id="chat-contain"></div>
<div class="work-options">
<<link "Go to the Kitchen">> <<goto "Restaurant Kitchen">> <</link>>
<<link "Go to the Office">> <<goto "Jims Office">> <</link>>
<<if $timeCounter >= $worklimit>>
<<set $workrem = [ { character: "MC", gender: "female", type: "thought", text: "It's too late in the day to start a shift now." } ]>>
<<script>> $(document).ready(function() { $("#chat-contain").html(window.renderConversation(State.variables.workrem)); }); <</script>>
<<elseif $wornOutfit !== "waitress">>
<<set $workrem = [ { character: "MC", gender: "female", type: "thought", text: "If I'm gonna work, I should probably put on my uniform first." } ]>>
<<script>> $(document).ready(function() { $("#chat-contain").html(window.renderConversation(State.variables.workrem)); }); <</script>>
<<elseif $energy <= 30>>
<<set $workrem = [ { character: "MC", gender: "female", type: "thought", text: "I'm feeling too drained to work effectively right now." } ]>>
<<script>> $(document).ready(function() { $("#chat-contain").html(window.renderConversation(State.variables.workrem)); }); <</script>>
<<elseif $hunger >= 80>>
<<set $workrem = [ { character: "MC", gender: "female", type: "thought", text: "My stomach's rumbling too much. I need to eat before working." } ]>>
<<script>> $(document).ready(function() { $("#chat-contain").html(window.renderConversation(State.variables.workrem)); }); <</script>>
<<else>>
<<link "Start Working">> <<goto "StartWork">> <</link>>
<</if>>
<<button "Leave" "Central District">><</button>>
</div>
</div>
<<nobr>>
<<switch $bodyShape>>
<<case "large">>
<<set $storeCD = 3>>
<<case "overw">>
<<set $storeCD = 2>>
<<case "fit">>
<<set $storeCD = 1>>
<<case "sexy">>
<<set $storeCD = 0>>
<</switch>>
>>
<<switch $bodyShape>>
<<case "large">>
<<set $kyleQuestion ={character: "kyle",gender: "male",type: "speech",text: "Leans in closer. How about a little private shopping session? That fat mouth of yours looks hungry."}>>
<<case "overw">>
<<set $kyleQuestion ={character: "kyle", gender: "male",type: "speech",text: "Leans in closer. How about a little private shopping session? I need to feel something soft and your plump ass looks inviting."}>> // overweight
<<case "fit">>
<<set $kyleQuestion ={character: "kyle",gender: "male",type: "speech",text: "Leans in closer. How about a little private shopping session? I<punc>ll give you some extra protein with that food."}>> // fit
<<case "sexy">>
<<set $kyleQuestion ={character: "kyle",gender: "male",type: "speech",text: "Leans in closer. How about a little private shopping session? I am horny as hell babe and you have the body to fix it."}>>
<</switch>>
<<switch $bodyShape>>
<<case "large">>
<<switch $hairColor>>
<<case "brown">>
<<set $ajImage = "img/events/MC-brown-kyle-large-aj.png">>
<<case "blonde">>
<<set $ajImage = "img/events/MC-blonde-kyle-large-aj.png">>
<<case "red">>
<<set $ajImage = "img/events/MC-red-kyle-large-aj.png">>
<<case "black">>
<<set $ajImage = "img/events/MC-black-kyle-large-aj.png">>
<</switch>>
<<case "overw">>
<<switch $hairColor>>
<<case "brown">>
<<set $ajImage = "img/events/MC-brown-kyle-overw-aj.png">>
<<case "blonde">>
<<set $ajImage = "img/events/Mc-blonde-kyle-overw-aj.png">>
<<case "red">>
<<set $ajImage = "img/events/MC-red-kyle-overw-aj.png">>
<<case "black">>
<<set $ajImage = "img/events/MC-black-kyle-overw-aj.png">>
<</switch>>
<<case "fit">>
<<switch $hairColor>>
<<case "brown">>
<<set $ajImage = "img/events/MC-brown-kyle-fit-aj.png">>
<<case "blonde">>
<<set $ajImage = "img/events/Mc-blonde-kyle-fit-aj.png">>
<<case "red">>
<<set $ajImage = "img/events/MC-red-kyle-fit-aj.png">>
<<case "black">>
<<set $ajImage = "img/events/MC-black-kyle-fit-aj.png">>
<</switch>>
<<case "sexy">>
<<switch $hairColor>>
<<case "brown">>
<<set $ajImage = "img/events/MC-brown-kyle-sexy-aj.png">>
<<case "blonde">>
<<set $ajImage = "img/events/Mc-blonde-kyle-sexy-aj.png">>
<<case "red">>
<<set $ajImage = "img/events/MC-red-kyle-sexy-aj.png">>
<<case "black">>
<<set $ajImage = "img/events/MC-black-kyle-sexy-aj.png">>
<</switch>>
<</switch>>
<<set $kyleQuestion3= [
{ text: "Slow down Kyle "+$devi+"25", result: [
{ character: "MC", gender: "female", type: "speech", text: "Kyle, im not ready to go all the way."},
{ character: "kyle", gender: "malde", type: "narrative", text: "You hear his pants drop in response and feel him sandwiching his big long cock between your ass cheeks." },
{ character: "kyle", gender: "male", type: "speech", text: "Dont worry baby, one thing at a time"},
{ character: "store clerk", gender: "masle", type: "narrative", text: "He grabs your hips, positioning his throbbing cock at your entrance. He starts grinding, the head of his cock teasing your tight opening. The slapping of your bodies echoes in the room as he moves faster and faster, the wet sound of skin meeting skin becoming louder with each thrust of his hips." },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/mc-kyle-aj1.webm" },
{ character: "MCs", gender: "female", type: "speech", text: "Im so fucking wet Kyle."},
{ character: "kyle", gender: "malde", type: "image", text:$ajImage },
{ character: "kyle", gender: "mals", type: "narrative", text: "His cock is coated in the juices leaking through your <animate>wet</animate> panties, and he can feel the warmth radiating from your cunt. The pleasure is too much, and he can<punc>t hold back any longer. With a final, powerful <animate>thrust</animate>, he lets out a growl as he cums, his hot seed spilling between your ass cheeks. He collapses against you, catching his breath." },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/mc-kyle-aj2.webm" },
{ character: "MCs", gender: "female", type: "thought", text: "Maybe, next time he can fuck me raw."},
{ character: "kyle", gender: "malde", type: "narrative", text: "You clean yourself up." },
],statChanges: { deviancy:2, healthyfood:1 ,gStore:$storeCD}},
{ text: "Let him fuck you"+$devi+"65", result: [
{character: "kyle", gender: "male", type: "speech", text: "Lets fuck. right here in the store." },
{ character: "MCs", gender: "female", type: "speech", text: "I-I... yeah..."},
{ character: "kyle", gender: "male", type: "speech", text: "Damn, what a view. I<punc>m gonna enjoy fucking this tight pussy."},
{ character: "kyle", gender: "malde", type: "video", text: "img/events/MC-kyle-fit-vs.webm" },
{ character: "MCs", gender: "female", type: "speech", text: "Please... just do it already."},
{ character: "kyle", gender: "male", type: "speech", text: "Impatient, huh? Okay, let<punc>s get started."},
{ character: "clerk", gender: "femadle", type: "narrative", text: "You feel him positioning himself, his hard cock pressing against your folds."},
{ character: "kyle", gender: "male", type: "speech", text: "You like that slut, huh? You like feeling my big cock against your slutty pussy?"},
{ character: "MCs", gender: "female", type: "speech", text: "Y-yes..."},
{ character: "store_clerk", gender: "madle", type: "narrative", text: "With a swift motion, he lined up his cock and <animate>thrust</animate> forward, entering your pussy in one smooth motion."},
{ character: "kyle", gender: "male", type: "speech", text: "<animate>Ah, fuck!</animate> Your pussy is so tight! It feels so good!"},
{ character: "kyle", gender: "malde", type: "video", text: "img/events/MC-kyle-fit-vs1.webm" },
{ character: "MCs", gender: "female", type: "speech", text: "<animate>Ooh! Oh god!</animate>"},
{ character: "kyle", gender: "male", type: "speech", text: "You like that, huh? You like getting fucked over this table like a little slut?" },
{ character: "MCs", gender: "female", type: "speech", text: "Yes, yes, fuck me like a slut!" },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/MC-kyle-fit-vs2.webm" },
{ character: "kyle", gender: "male", type: "speech", text: "That<punc>s it, take that cock."},
{ character: "MCs", gender: "female", type: "speech", text: "Oh god, <animate>I<punc>m gonna cum!</animate>" },
{ character: "kyle", gender: "male", type: "speech", text: "Me too, baby, cum with me."},
{ character: "kyle", gender: "male", type: "speech", text: "Ahhh fuck!" },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/MC-kyle-fit-vs3.webm" },
{ character: "MCs", gender: "female", type: "speech", text: "Oh god, yes!" },
{ character: "kyle", gender: "madle", type: "narrative", text: "You both collapse on the table, chests heaving. Deviancy:+4 , Healthy food:+2"},
],statChanges: { deviancy:4, healthyfood:3 ,gStore:$storeCD}, statRequirement: { stat: "deviancy", threshold: 65 }}
]>>
<<set $bjQuestion ={ text: "Suck his cock "+$devi+"50", result: [
{ character: "MC", gender: "female", type: "speech", text: "Kyle, how about a blowjob."},
{ character: "kyle", gender: "malde", type: "narrative", text: "You hear his pants drop behind the counter." },
{ character: "kyle", gender: "male", type: "speech", text: "Now get behind this counter." },
{ character: "MC", gender: "female", type: "speech", text: "Wait...Right here. Can<punc>t we go to the back?" },
{ character: "kyle", gender: "male", type: "speech", text: "Oh, It<punc>ll be fine. Just act natural. Now get that pretty mouth on my cock before I change my mind about that food." },
{ character: "clerk", gender: "mahle", type: "narrative", text: "He leans back , presenting his throbbing erection. With a sigh, you walk around behind the counter and kneel down. Your lips part and take the tip into your warm, wet mouth, swirling your tongue around the head." },
{ character: "kyle", gender: "male", type: "speech", text: "That<punc>s a good girl. Open wide." },
{ character: "clerk", gender: "mahle", type: "narrative", text: "Suddenly a customer walks in." },
{ character: "kyle", gender: "male", type: "speech", text: "Hi, welcome to the General Store! How are you doing today?" },
{ character: "stranger2", gender: "female", type: "speech", text: "I<punc>m doing well, thank you. I<punc>m looking for the latest specials. What do you have on sale this week?" },
{ character: "kyle", gender: "male", type: "speech", text: "Dont worry baby, one thing at a time"},
{ character: "clerk", gender: "mwale", type: "narrative", text: "You work your mouth up and down his shaft, taking him deeper with each thrust. Saliva drips down your chin as you gag slightly on his thick cock." },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/mc-kyle-bj1.webm" },
{ character: "kyle", gender: "male", type: "speech", text: "That<punc>s it baby..." },
{ character: "stranger2", gender: "female", type: "speech", text: "Excuse me?" },
{ character: "kyle", gender: "male", type: "speech", text: "I mean..we have milk for $3.97. <animate>Mmmm... Mph... Uh!</animate>" },
{ character: "stranger2", gender: "female", type: "speech", text: "Oh, that<punc>s wonderful! I think I<punc>ll take a one, please." },
{ character: "kyle", gender: "male", type: "speech", text: "C-Coming right up!" },
{ character: "clerk", gender: "maled", type: "narrative", text: "Kyle reaches down with his free hand to gently guide your head, starting a slow, deep rhythm as he fucks your mouth. His other hand grabs a carton of milk on the counter. His breathing quickens as he loses himself in the feeling , pulling out and cumming all over your face." },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/mc-kyle-bj2.webm" },
{ character: "kyle", gender: "male", type: "speech", text: "Here you go! <animate>Some...</animate> fresh milk... <animate>Mmmmmmm</animate>" },
{ character: "stranger2", gender: "female", type: "speech", text: "Alright here you go!" },
{ character: "clerk", gender: "malde", type: "narrative", text: "The customer hands Kyle money for the milk. he smiles and hands her the change panting with pleasure. " },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/mc-kyle-bj3.webm" },
{ character: "clerk", gender: "madle", type: "narrative", text: "As the customer leaves, Kyle pulls his cock out of your mouth with a wet pop. He strokes himself rapidly, his swollen head already leaking pre-cum. With a grunt, he explodes, shooting thick ropes of hot semen across your face, painting your cheeks, nose and open mouth in his milky essence." },
{ character: "kyle", gender: "male", type: "speech", text: "How does that milk taste baby?" },
{ character: "kyle", gender: "male", type: "speech", text: "I mean... Thank you for shopping with us!" },
{ character: "clerk", gender: "mddale", type: "narrative", text: "He tucks his softening cock back into his pants and straightens his shirt, looking like a model employee once again. You hurry to the backroom to wipe the cum off your face and regain your composure. The store goes back to business as usual, with the clerk ready to serve the next unsuspecting customer. Deviancy:+3 , Healthy food:+2" },
], statChanges: { deviancy:3, healthyfood:2, gStore:$storeCD }, statRequirement: { stat: "deviancy", threshold: 50 }}>>
<<set $kyleQuestion2 = {character: "Narrator", gender: "na", type: "choice", text: "How do you react?",
choices: [
{ text: "Deal "+$devi+"25", result: [
{ character: "MC", gender: "female", type: "speech", text: "Ok but nothing too crazy" },
{ character: "kyle", gender: "male", type: "speech", text: "No worries, I can assure you that youre in good hands. Now follow me." },
{ character: "kyle", gender: "malde", type: "narrative", text: "Kyle leads you to the staff room at the back of the store, locking the door behind you. The cramped space is filled with the musky scent of sweat, and fabric softener. The Store Clerk<punc>s erection strains against the fabric of his slacks, clearly visible from the outline." },
{ character: "MC", gender: "female", type: "speech", text: "Ok what do i do" },
{ character: "kyle", gender: "male", type: "speech", text: "Take of those pants and we<punc>ll get started." },
{ character: "kyle", gender: "malde", type: "narrative", text: "Kyle proceeds to bend you over a table ." },
{ character: "kyle", gender: "malde", type: "video", text: "img/events/mc-booty.webm" },
{ character: "kyle", gender: "malde", type: "narrative", text: "You can feel kyles hard cock grinding against your ass. his pulsing erection <animate>throbbing</animate> against your sensitive clit. You gasp, feeling the throbbing length trying to press into you." },
{ character: "kyle", gender: "male", type: "speech", text: "God, you have such a nice ass. " },
{ character: "MCs", gender: "female", type: "thought", text: "oh fuck, I need to slow him down" },
{character: "Narrator", gender: "na", type: "choice", text: "what do you say",
choices: $kyleQuestion3},
], statChanges: { deviancy:1.5}, statRequirement: { stat: "deviancy", threshold: 25 }},
$bjQuestion,
{ text: "No Deal", result: [
{ character: "MC", gender: "female", type: "speech", text: "Ummm...Maybe Next time" },
{ character: "kyle", gender: "male", type: "speech", text: "No worries, $firstname, Come find me when you feel like getting frisky" },
], }]
}>>
<<if $gStore > 0>>
<<set $cdblock =[
{ character: "kyle", gender: "male", type: "speech", text: "What do you need?"},
{ character: "MC", gender: "female", type: "speech", text: "Well... Kyle I was hoping to see if you offered discounts on the healthy food." },
{ character: "kyle", gender: "male", type: "speech", text: "Sorry, girl I<punc>m still a little tired." },
{ character: "kyle", gender: "male", type: "speech", text: "Maybe if you had better fitness I might be a lot more motivated." },
{ character: "kyle", gender: "male", type: "speech", text: "Come talk to me in "+$gStore+" days." },
]>>
<<else>>
<<set $cdblock =[
{ character: "kyle", gender: "male", type: "speech", text: "What do you need?"},
{ character: "MC", gender: "female", type: "speech", text: "Well... Kyle I was hoping to see if you offered discounts on the healthy food." },
{ character: "kyle", gender: "male", type: "speech", text: "For you? I might be able to work something out. However, I need you to offer something in return." },
{ character: "kyle", gender: "ale", type: "narrative", text: "Kyle takes a moment to look you up and down while leaning against the counter." },
{ character: "MC", gender: "female", type: "speech", text: "What do you have in mind?" },
$kyleQuestion,
$kyleQuestion2
]>>
<</if>>
<<set $conversationkyle = [
{ character: "kyle", gender: "male", type: "speech", text: "Hey $firstname, welcome back! feel free to browse to your heart<punc>s content." } ,
{ character: "MC", gender: "fele", type: "narrative", text: "Kyle smiles warmly." },
{character: "Narrator", gender: "na", type: "choice", text: "How do you react?",
choices: [
{ text: "Talk to him about a discount", result: $cdblock }
]}
]
>>
<</nobr>>
<<set $selectedItem = $selectedItem or "">>
<!-- Render conversation -->
<div id="chat-containerkyle"></div>
<<script>>
$(document).ready(function() {
$("#chat-containerkyle").html(window.renderConversation(State.variables.conversationkyle));
});
<</script>>
<!-- Store Layout -->
<div class="store-container">
<!-- Items Grid Section -->
<div class="store-left">
<h1>General Store</h1>
<div id="itemGrid" class="item-grid">
<!-- Items will be loaded dynamically -->
</div>
</div>
<!-- Preview & Purchase Section -->
<div class="store-right">
<h3>Item Preview</h3>
<img id="itemPreview" class="item-preview" width="250px" src="img/items/placeholder.png" alt="Item Preview">
<p id="itemDescription">Select an item to see details.</p>
<<button "Buy Item">>
<<set $purchasedItem = $selectedItem>>
<<redo>>
<<script>>
if(State.variables.money-State.variables.selectedItem.price>0){
State.variables.money-=State.variables.selectedItem.price;
switch(State.variables.selectedItem.name){
case "Healthy Food":
State.variables.healthyFood+=1;
alert(`You've bought ${State.variables.selectedItem.name}`);
break;
case "Normal Food":
State.variables.normalFood+=1;
break;
case "Junk Food":
State.variables.junkFood+=1;
break;
case "Coffee beans x5":
State.variables.coffeeBeans+=5;
break;
case "A bottle of Whiskey":
State.variables.normalFood+=2;
break;
case "A bottle of Wine":
State.variables.wine +=2;
break;
case "Tea Leaves x5":
State.variables.tea+=5;
break;
case "Beer x3":
State.variables.beer+=3;
break;
}
}
<</script>>
<</button>>
</div>
</div>
<<button "Leave" "Central District">><</button>>
<style>
.store-container {
display: flex;
flex-wrap: wrap;
max-width: 900px;
margin: 1em auto;
gap: 1em;
padding: 1em;
background-color: #f7f7f760;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}
.store-left, .store-right {
flex: 1 1 300px;
padding: 0.5em;
}
.store-left h1 {
text-align: center;
margin-bottom: 0.5em;
}
.item-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
grid-gap: 1em;
}
.store-item {
background: #cfd1d060;
border: 1px solid #ddd;
border-radius: 4px;
padding: 0.5em;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s ease;
}
.store-item:hover {
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.store-item img {
max-width: 100%;
height: auto;
border-radius: 4px;
}
.store-item h4 {
margin: 0.5em 0 0.2em;
font-size: 0.8em;
}
.store-item p {
font-size: 0.9em;
margin: 0.2em 0;
}
.item-preview {
width: 100%;
max-width: 300px;
height: auto;
display: block;
margin: 0 auto;
border-radius: 4px;
}
.store-right {
text-align: center;
}
.store-right h3 {
margin-bottom: 0.5em;
}
.store-right button, .store-right a {
margin-top: 0.5em;
padding: 0.5em 1em;
font-size: 1em;
border: none;
border-radius: 4px;
background-color: #4CAF50;
color: white;
cursor: pointer;
text-decoration: none;
}
.store-right button:hover, .store-right a:hover {
background-color: #45a049;
}
</style>
<<script>>
$(document).ready(function() {
// Populate the item grid with store items from $general
var generalItems = State.variables.generalStuff;
var $grid = $("#itemGrid");
$grid.empty();
if (generalItems.length === 0) {
$grid.html("<p>No items available at the store.</p>");
} else {
generalItems.forEach(function(item) {
var $div = $("<div>")
.addClass("store-item")
.html(`
<h4>${item.name}</h4>
`)
.on("click", function() {
State.variables.selectedItem = item;
$("#itemPreview").attr("src", item.img);
$("#itemDescription").text(item.name + " costs $" + item.price);
});
$grid.append($div);
});
}
});
<</script>>
rererreaqrsdasdas<<nobr>><<set $energy -=30>>
<<set $workProgressBistro = $workProgressBistro or 0>>
<<script>> window.advanceTime(); <</script>>
<<switch $bodyShape>>
<<case "large">>
<<set $hunger+=15>>
<<case "overw">>
<<set $hunger+=10>>
<<case "fit">>
<<set $hunger+=5>>
<<case "sexy">>
<<set $hunger+=5>>
<</switch>>
<<set $workProgressBistro += 1>>
<<set $bistroLevel = $bistroLevel or 1>>
<<set $worklimit = $worklimit or 3>>
<<set $basePay = $bistroLevel * 30>> /* Base Pay Increases with Experience */
<<set $fitnessBonus = $fitness * 0.2>> /* Fitness Bonus */
<<set $beautyBonus = $beauty * 0.3>> /* Beauty Tips */
<<set $moneyEarned =Math.round( $basePay + $fitnessBonus + $beautyBonus)>>
<<set $money += $moneyEarned>>
<<switch $bistroLevel>>
<<case 1>>
<<switch random(1,5)>>
<<case 1>>
<<set $workevent = [
{ character: "MC", gender: "nog", type: "narrative", text: "The diner<punc>s neon sign flickers as you push open the heavy glass door." },
{ character: "MC", gender: "female", type: "thought", text: "WOO! I love the smell of grease in the morning." },
{ character: "jim", gender: "male", type: "speech", text: "Hey $firstname. Let<punc>s start you on dish duty." },
{ character: "Candy", gender: "nog", type: "narrative", text: "You walk into the Kitchen and start washing dishes." },
{ character: "Kofi", gender: "male", type: "speech", text: "Ay, baby girl! Don<punc>t worry, you<punc>ll get used to the heat, yeah?" }
]>>
<<case 2>>
<<set $workevent = [
{ character: "Candy", gender: "nog", type: "narrative", text: "Candy glides between tables with practiced ease, trays balanced perfectly." },
{ character: "Candy", gender: "female", type: "speech", text: "Hey new girl, watch and learn how it<punc>s done." },
{ character: "MC", gender: "female", type: "thought", text: "She makes it look so easy..." },
{ character: "Kofi", gender: "noeg", type: "narrative", text: "Jim appears next to you and says while adjsuting his pants." },
{ character: "jim", gender: "male", type: "speech", text: "Candy<punc>s our top earner for a reason." }
]>>
<<case 3>>
<<set $workevent= [
{ character: "Kofi", gender: "nog", type: "narrative", text: "Steam rises from a bubbling pot as Kofi stirs with intense concentration." },
{ character: "Kofi", gender: "male", type: "speech", text: "$firstname, taste this new sauce I<punc>m working on." },
{ character: "MC", gender: "female", type: "speech", text: "Wow, that<punc>s actually amazing!" },
{ character: "Kofi", gender: "male", type: "speech", text: "Secret family recipe, straight from Kingston!" }
]>>
<<case 4>>
<<set $workevent= [
{ character: "Kofi", gender: "nog", type: "narrative", text: "You<punc>re serving a customer some food.He looks to be a high roller. he asks." },
{ character: "stranger1", gender: "male", type: "speech", text: "$firstname, Your service has been awesome. Im wondering if we can do something in a less public setting?" },
{ character: "MC", gender: "female", type: "speech", text: "Umm, I don<punc>t know" },
{ character: "stranger1", gender: "male", type: "speech", text: "Girl you<punc>re so hot , I<punc>m willing to pay for it." },
{character: "Narrator", gender: "na", type: "choice", text: "Do you try her tactics",
choices: [
{ text: "Take him home 35"+$devi, type:"transfer", result:"RandomSex", statRequirements:[{stat:"deviancy",threshold:35}]},
{ text: "No",result:[
{ character: "stranger1", gender: "male", type: "speech", text: "No , problem girl. Heres a tip anyway! +$20" }
], statChanges:{"money":20}}
]
}
]>>
<<case 5>>
<<set $workevent = [
{ character: "MC", gender: "nog", type: "narrative", text: "The late-night fluorescent lights buzz overhead as you count tips." },
{ character: "MC", gender: "female", type: "thought", text: "These student loans are crushing me..." },
{ character: "jim", gender: "male", type: "speech", text: "$firstname, you gotta be more like Candy." },
{ character: "MC", gender: "female", type: "speech", text: "And how am i supposed to do that." },
{ character: "jim", gender: "male", type: "speech", text: "Give them a little bit of uh, visual entertainment. look at Candy" },
{ character: "narra", gender: "fse", type: "video", text: "img/events/candy-work-2.webm" },
{ character: "MC", gender: "nog", type: "narrative", text: "You see Candy entertaining the customers with her not so family friendly methods"},
{character: "Narrator", gender: "na", type: "choice", text: "Do you try her tactics?",
choices: [
{ text: "Seduce a customer 15"+$devi, result:
[
{ character: "MC", gender: "nog", type: "narrative", text: "You manage to get an extra tip from an entranced customer." }
],
statRequirements:[{stat:"deviancy",threshold:15}], statChanges:{"money":20}
},
{ text: "No",result:[
{ character: "MC", gender: "female", type: "speech", text: "Nah, how am i supposed to do that." }
]}
]
}
]>>
<</switch>>
<<case 2>>
<<switch random(1,5)>>
<<case 1>>
<<set $workevent = [
{ character: "MC", gender: "nog", type: "narrative", text: "The morning sun streams through the windows as you set up your section." },
{ character: "Candy", gender: "female", type: "speech", text: "Hey, it looks like youre body is shaping up nicely" },
{ character: "MC", gender: "female", type: "thought", text: "Well im trying my best" },
{ character: "jim", gender: "nog", type: "narrative", text: "Jim watches the exchange from behind the counter, arms crossed." },
{ character: "jim", gender: "nog", type: "narrative", text: "He joins you on the other side of the counter and you hear and feel an audible <animate>*SMACK*</animate>" },
{ character: "jim", gender: "nog", type: "speech", text:"$firstname now has a donkey booty, nice" },
]>>
<<case 2>>
<<set $workevent = [
{ character: "Kofi", gender: "nog", type: "narrative", text: "The kitchen moves like a well-oiled machine during the lunch rush." },
{ character: "Kofi", gender: "male", type: "speech", text: "You<punc>re picking up the kitchen rhythm nice, $firstname!" },
{ character: "MC", gender: "female", type: "speech", text: "Thanks Kofi! Your cooking tips have been helping." },
{ character: "Kofi", gender: "male", type: "speech", text: "Lemme show somtin new gyal" }
]>>
<<case 3>>
<<set $workevent = [
{ character: "Kofi", gender: "nog", type: "narrative", text: "a particularly attractive and mysterious gentleman in a corner booth. He was well-dressed in an impeccable suit." },
{ character: "MC", gender: "female", type: "speech", text: "Would you like some more wine, sir?" },
{ character: "Male", gender: "male", type: "speech", text: "No im fine but I must say, your presence at the table adds a special flavor to the evening." },
{ character: "MC", gender: "fle", type: "narrative", text: "That makes $firstname blush like a ripe cherry." }
]>>
<<case 4>>
<<set $workevent = [
{ character: "Kofi", gender: "nog", type: "narrative", text: "The kitchen moves like a well-oiled machine during the lunch rush." },
{ character: "Kofi", gender: "male", type: "speech", text: "You<punc>re picking up the kitchen riddim nice, Star!" },
{ character: "MC", gender: "fle", type: "narrative", text:"Candy notices the attention Kofi is giving $firstname.She proceeds to then grab the oil and make a spectacle of herself" },
{ character: "Candy", gender: "female", type: "speech", text: "Hey Kofi! look at this." },
{ character: "Kofi", gender: "madle", type: "video", text: "img/events/candy-work.webm" },
{ character: "Kofi", gender: "male", type: "speech", text: "YA WASTIN MA BUMBOCLAAAT OIL ." }
]>>
<<case 5>>
<<set $workevent= [
{ character: "Kofi", gender: "nog", type: "narrative", text: "You<punc>re serving a customer some food.He looks to be a high roller. he asks." },
{ character: "stranger1", gender: "male", type: "speech", text: "$firstname, Your service has been awesome. Im wondering if we can do something in a less public setting?" },
{ character: "MC", gender: "female", type: "speech", text: "Umm, I don<punc>t know" },
{ character: "stranger1", gender: "male", type: "speech", text: "Girl you<punc>re so hot , I<punc>m willing to pay for it." },
{character: "Narrator", gender: "na", type: "choice", text: "Do you try her tactics",
choices: [
{ text: "Take him home 35"+$devi, type:"transfer", result:"RandomSex", statRequirements:[{stat:"deviancy",threshold:35}]},
{ text: "No",result:[
{ character: "stranger1", gender: "male", type: "speech", text: "No , problem girl. Heres a tip anyway! +$20" }
], statChanges:{"money":20}
}
]
}
]>>
<</switch>>
<</switch>>
<</nobr>>
<div id="chat-container234"></div>
<<script>>
$(document).ready(function() {
$("#chat-container234").html(window.renderConversation(State.variables.workevent));
});
<</script>>
<p>You complete your shift and earn <strong>$<<=$moneyEarned>></strong>!</p>
<<if $workProgressBistro === 4 or $workProgressBistro === 12 or $workProgressBistro === 24 or $workProgressBistro === 40>>
<<set $jimreview=[
{ character: "jim", gender: "male", type: "speech", text: "Hey $firstname Could you please join me in my office for a performance review" },
]>>
<<else>>
<<set $jimreview=[]>>
<</if>>
<<if $timeCounter>=$worklimit>>
<<set $worklimitchat=[
{character: "jim", gender: "male", type: "speech", text: "Hey $firstname, Time to wrap it up, Candy needs the extra work" },
]>>
<<else>>
<<if $energy-30>0>>
<<button "Keep Working" "StartWork">><</button>>
<<set $worklimitchat=[]>>
<<else>>
<<set $worklimit={character: "jim", gender: "male", type: "speech", text: "Hey $firstname, Get Outta here! You look exhausted! " }>>
<<script>>
window.scrollTo(0, 0);
<</script>>
<</if>>
<</if>>
<<script>>
$(document).ready(function() {
$("#wchat2").html(window.renderConversation(State.variables.jimreview));
$("#wchat2").html(window.renderConversation(State.variables.worklimitchat));
});
<</script>>
<!-- Buttons -->
<<button "Take a Break" "Central District">><</button>>
<<nobr>>
<<set $shopdesc = [
{ character: "Deevay", gender: "male", type: "speech", text: "So, this place is still growing, just like the whole city around us." },
{ character: "Deevay", gender: "male", type: "speech", text: "Well, Im building this whole thing solo. Pretty ambitious, right?" },
{ character: "MC", gender: "female", type: "speech", text: "Wait—one person is making all of this?" },
{ character: "Deevay", gender: "male", type: "speech", text: "Yep! One person, a whole game. But there<punc>s only so much I can do alone." },
{ character: "MC", gender: "female", type: "speech", text: "I guess that explains why there<punc>s room for more..." },
{ character: "Deevay", gender: "male", type: "speech", text: "Exactly. The goal is to add more outfits, systems, more places, more ways to live in this world." },
{ character: "Deevay", gender: "male", type: "speech", text: "I<punc>ll develop this place in the directions the fans want to go however the support is kinda important, you know? Every little bit helps push things forward." },
{ character: "MC", gender: "female", type: "speech", text: "Huh... so if people support it, the city could get even bigger?" },
{ character: "Deevay", gender: "female", type: "speech", text: "Bigger, deeper, better. More jobs, more choices... more of everything." },
{ character: "Deevay", gender: "female", type: "speech", text: "Check back in a few weeks. Who knows? Maybe something new will already be in the works." }
]>>
<<set $intro = [
{ character: "Deevay", gender: "male", type: "speech", text: "Hey there, welcome $firstname! Name<punc>s Deevay Loper, but you can just call me Dave." },
{ character: "Deevay", gender: "male", type: "speech", text: "Glad you decided to stop by and thanks for playing. This little world? It<punc>s still taking shape, but that<punc>s part of the fun, isn<punc>t it?" },
{ character: "Deevay", gender: "male", type: "speech", text: "See, the goal here is simple: survive, hustle, and maybe—just maybe—build something better for yourself." },
{ character: "MC", gender: "female", type: "speech", text: "Sounds like a challenge." },
{ character: "Deevay", gender: "male", type: "speech", text: "It is. At the moment there isnt much flexibility , this is the first build afterall" },
{ character: "Deevay", gender: "male", type: "speech", text: "And hey, I<punc>m a solo dev working on this thing, so expect updates, new features, and plenty of surprises along the way." },
{ character: "Deevay", gender: "male", type: "speech", text: "So go on, dive in, and let<punc>s see what kind of story you end up writing for yourself." }
]>>
<<set $conversation = [
{ character: "Deevay", gender: "male", type: "speech", text: "Hi there , we arent open at the moment but feel free to ask me about the city!" } ,
{character: "Narrator", gender: "na", type: "choice", text: "Deevay glances at you and beams a friendly smile in your direction.",
choices: [
{ text: "Ask about the Game", result: $shopdesc},
{ text: "Introduce Yourself", result: $intro }
]
}]>>
<!-- Render conversation -->
<div id="achat-container"></div>
<<do>>
<<script>>
$(document).ready(function() {
$("#achat-container").html(window.renderConversation(State.variables.conversation));
});
<</script>>
<</do>>
<</nobr>>
<<button "Ask him something else">><<redo>><</button>>
<<link "Leave">> <<goto "Mall">> <</link>><div id="chat-container"></div>
<<set $landlordCD=7>>
<<set $done=0>>
<<set $Day=2>>
<<set $jeff=0>>
<<set $barbra=0>>
<<nobr>>
<<set $end2 = [
{character:"jeffrey" ,gender:"male",type:"speech", text:"Alright Star, just know the offer still stands. I will see you next week. I<punc>m taking an extra fifty for the time."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey leaves -$250" },
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Bedroom", type: "transfer", result: "Bedroom" },
{ text: "Sleep", type: "transfer", result: "Sleep" },
{ text: "Kitchen", type: "transfer", result: "Kitchen" }
]}
]>>
<<set $end1 = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey cleans himself up" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"Star , consider the rent paid this week"},
{character:"MC" ,gender:"female",type:"thought", text:"WOW, now I dont have to pay. I gotta make sure he comes back for more"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You walk up to him and whisper in his ear" },
{character:"MC" ,gender:"female",type:"speech", text:"That sounds great baby, and dont worry Im hungry for more"},
{character:"jeffrey" ,gender:"male",type:"speech", text:"*clears throat* well then, I will see you next week"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey leaves , no doubt with a clearer mind than before" },
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Bedroom", type: "transfer", result: "Bedroom" },
{ text: "Sleep", type: "transfer", result: "Sleep" },
{ text: "Kitchen", type: "transfer", result: "Kitchen" }
]}
]>>
<<set $jeffbj= [
{character:"MC" ,gender:"female",type:"speech", text:"Yes, that sounds fair"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You kneel infront of him" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"Youve made the right choice "},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "He unzips his pants, freeing his already stiff member" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Hes about to say something ,his cock throbbing near your mouth...you interject" },
{character:"MC" ,gender:"female",type:"speech", text:"Shut up Jeffrey"},
{character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "your tongue tentatively <animate>flicks</animate> against the tip, tasting the pre-cum that drips from it. Mr. Thompson <animate>moans</animate>, and you take this as encouragement"},
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/MC-jeff-bj-overw.jpeg" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"Yeah, just like that. Show me how much you want to keep that low rent."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You try to emulate Candys dick sucking tecnique he room is filled with the wet sounds of your lips gliding over his cock" },
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/MC-jeff-bj1.webm" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffreys hard cock begins to twitch in your mouth" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"<animate>oh fuck!</animate>"},
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/MC-jeff-bj2.webm" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey looks completely spent" },
{character:"MC" ,gender:"female",type:"speech", text:"Thanks for the meal baby"},
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Continue", result: $end1, }
]
}
]>>
<<set $jeffhj= [
{character:"MC" ,gender:"female",type:"speech", text:"Yes, that sounds fair"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You kneel infront of him" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"Youve made the right choice "},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "He unzips his pants, freeing his already stiff member" },
{character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "you grip his cock and begin <animate>stroking</animate> it with fervor"},
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/MC-jeff-hj-large.jpeg" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"Yeah, Spit on it"},
{character:"MC" ,gender:"female",type:"speech", text:"Oh, its so big daddy"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "<animate>Hawk Tuah</animate>" },
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/MC-jeff-hj1.webm" },
{character:"MC" ,gender:"female",type:"speech", text:"why is Barbra so mean to me"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeff is in a trance and simply answers" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"She thinks your wasting your youth being so fat"},
{character:"MC" ,gender:"female",type:"speech", text:"bitch.."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeff facial expression changes" },
{character:"MC" ,gender:"female",type:"speech", text:"bitch... no wait im s"},
{character:"jeffrey" ,gender:"male",type:"speech", text:"Say it again , call her a...<animate>hyoo</animate>"},
{character:"MC" ,gender:"female",type:"speech", text:"YOUR WIFES A MEAN OLD BI!!!"},
{character:"jeffrey" ,gender:"male",type:"speech", text:"<animate>oh..oh god</animate>"},
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/MC-jeff-hj2.webm" },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Continue", result: $end1,}
]
}
]>>
<<set $choice2 = [
{ text: "Give him a handjob "+$devi+"25", result: $jeffhj, statChanges: { deviancy:1 , done:1}, statRequirement: { stat: "deviancy", threshold: 25 }},
{ text: "Suck his cock "+$devi+"60", result: $jeffbj, statChanges: { deviancy:2, done:1 }, statRequirement: { stat: "deviancy", threshold: 60 }},
{ text: "Fuck him(Not yet implemented) "+$devi+"70", result: $jeffvs, statChanges: { deviancy:2, done:1 }, statRequirement: { stat: "deviancy", threshold: 90000 }},
{ text: "Say your not ready", result: $end2, statChanges: { money:-250, done:1 }}
]>>
<<set $conversation3 = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey gets up and sits next to you" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"How are you feeling Star, I tried to have a chat with her but I can<punc>t seem to get a word in these days"},
{character:"MC" ,gender:"female",type:"speech", text:"It<punc>s just a lot of pressure Mr Thompson. I also have my student loan repayments to think about"},
{character:"jeffrey" ,gender:"male",type:"speech", text:"Well then..I have some of my own pressures as well"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey puts his hand on your thigh" },
{character:"jeffrey" ,gender:"male",type:"speech", text:"Perhaps we could find a way to alleviate some of that pressure, if you know what I mean.."},
{character:"MCs" ,gender:"female",type:"speech", text:"Alleviate the pressure..."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey inches a little closer, your arrousal <animate>grows</animate> as he continues to <animate>rub</animate> your thigh" },
{ character: "jeffrey", gender: "male", type: "speech", text: "Exactly. You see, we are both adults, and we both know what can be done to lessen the financial burden."},
{character:"MCs" ,gender:"female",type:"thought", text:"I could really use the help, maybe just a little favor for now"},
{character: "Narrator", gender: "na", type: "choice", text: "Suddenly youre confronted with a choice",
choices: $choice2
}
]>>
<<set $skip = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "barbra -1" },
{character:"barbra" ,gender:"female",type:"speech", text:"You lack basic confidence girl, dissapointing. OK jeff, lets get out of here"},
{ character: "jeffrey", gender: "male", type: "speech", text: "Honey you dont have to be so mea..."},
{character:"barbra" ,gender:"female",type:"speech", text:"Oh shut up jeff. Im guessing that the advice you would give is for her to remain mediocre"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You look at Jeffrey once more" },
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/jeffrey-smile2.gif" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "The door slams behind Barbra as she jets off to deliver bad news to some other poor soul" },
{character: "Narrator", gender: "na", type: "choice", text: "The door slams behind her",
choices: [
{ text: "Continue", result: $conversation3},
]
}
]>>
<<switch $bodyShape>>
<<case "large">>
<<set $barbraMCinsult = "eating garbage">>
<<case "overw">>
<<set $barbraMCinsult = "looking absolutely mediocre">>
<<case "fit">>
<<set $barbraMCinsult = "empty words from an empty mind">>
<<case "sexy">>
<<set $barbraMCinsult = "sucking dicks like an absolute slut">>
<</switch>>
<<if $landlord===0>>
<<set $landlordspeak2 = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Barbra +1" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Barbra scans your body from head to toe" },
{character:"barbra" ,gender:"female",type:"speech", text:"Aww , poor baby. I get it , it<punc>s tough out here, especially for a young lady such as yourself."},
{character:"barbra" ,gender:"female",type:"speech", text:"But judging from the way you look, theres enough money to feed the both of us"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffreys Facial expression turns to shock" },
{ character: "jeffrey", gender: "male", type: "speech", text: "Barbra!"},
{character:"barbra" ,gender:"female",type:"speech", text:"Oh, get a grip Jeffrey, this kinda chat is for just us ladies. You<punc>ve looked like that your entire life Jeff! She, on the other hand, actually has potencial"},
{character:"MC" ,gender:"female",type:"thought", text:"I really cant afford to start looking for a new place right now , so I<punc>ll just agree to her terms"},
{character:"MC" ,gender:"female",type:"speech", text:"No problem Mrs Thompson, I understand"},
{character:"barbra" ,gender:"female",type:"speech", text:"Im glad you can see things my way. OK jeff, lets get out of here"},
{ character: "jeffrey", gender: "male", type: "speech", text: "Ya know honey, I saw that Stars faucet was broken so I wanna see if.."},
{character:"barbra" ,gender:"female",type:"speech", text:"There you go mumbling on again like the neanderthal you are..."},
{character:"barbra" ,gender:"female",type:"speech", text:"goodbye Star, call me if he starts bothering you"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You look at jeffrey once more" },
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/jeffrey-smile2.gif" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "The door slams behind Barbra as she jets off to deliver bad news to some other poor sob" },
{character: "Narrator", gender: "na", type: "choice", text: "The door slams behind her",
choices: [
{ text: "Continue", result: $conversation3},
]
}
]>>
<<else>>
<<set $landlordspeak2 = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Barbra +1" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Barbra smiles" },
{character:"barbra" ,gender:"female",type:"speech", text:"Atleast your mouth is good for more than "+$barbraMCinsult+"!"},
{character:"MC" ,gender:"female",type:"speech", text:"Damn... I understand"},
{character:"barbra" ,gender:"female",type:"speech", text:"I<punc>m glad you can see things my way. OK Jeff, lets get out of here"},
{ character: "jeffrey", gender: "male", type: "speech", text: "Ya know honey, I saw that $firstname was low on..."},
{character:"barbra" ,gender:"female",type:"speech", text:"There you go mumbling on again like anything you say matters..."},
{character:"barbra" ,gender:"female",type:"speech", text:"goodbye $firstname, call me if he starts bothering you"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You look at jeffrey once more" },
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/jeffrey-smile2.gif" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "The door slams behind Barbra as she jets off to deliver bad news to some other poor sob" },
{character: "Narrator", gender: "na", type: "choice", text: "The door slams behind her",
choices: [
{ text: "Continue", result: $conversation3},
]
}
]>>
<</if>>
<<set $conversation2 = $landlordspeak2 >>
<<if $landlord===0>>
<<set $landlordspeak = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "The doorbell rings, Knowing its your landlords , you nervously get up and answer it" },
{character:"MC", gender:"female",type:"speech", text:"Mr and Mrs Thompson how are you."},
{ character: "jeffrey", gender: "male", type: "speech", text: "Good afternoon, $firstname. Its a pleasure to see you again. We have come to discuss..."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Mrs. Thompson, taking charge, struts past you into the living room, while Mr. Thompson waits for you to adjust before entering" },
{character:"barbra" ,gender:"female",type:"speech", text:"Shut up Jeffrey, nobody cares about that"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey stays quiet and smiles" },
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/jeffrey-smile.gif" },
{character:"barbra" ,gender:"female",type:"speech", text:"The pleasure is all mine, dear. Now, sit down , we need to discuss some things."},
{character:"barbra" ,gender:"female",type:"speech", text:"$firstname, as you know, the market price has increased, and so have our expenses. We need to raise your rent."},
{character:"MC" ,gender:"female",type:"speech", text:"Oh, I see. By how much?"},
{character:"barbra" ,gender:"female",type:"speech", text:"Two hundred dollars a month."},
{character:"MC" ,gender:"female",type:"speech", text:"Thats... a lot."},
{character: "Narrator", gender: "na", type: "choice", text: "You feel the urge to plead your case, 200 is too much",
choices: [
{ text: "Speak up", result: $conversation2, statChanges: { barbra:1 }},
{ text: "Stay quiet", result: $skip, statChanges: { barbra:-1 }}
]
}
]>>
<<else>>
<<set $landlordspeak = [
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "The doorbell rings, Knowing its your landlords , you nervously get up and answer it" },
{character:"MC", gender:"female",type:"speech", text:"Mr and Mrs Thompson how are you."},
{ character: "jeffrey", gender: "male", type: "speech", text: "Good afternoon, $firstname. Its a pleasure to see you again. We have come to collect..."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Mrs. Thompson, taking charge, struts past you into the living room, while Mr. Thompson waits for you to adjust before entering" },
{character:"barbra" ,gender:"female",type:"speech", text:"Shut up Jeffrey, you savoury muffin"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Jeffrey stays quiet and smiles" },
{ character: "Jeffrey Thompson", gender: "mae", type: "image", text: "img/events/jeffrey-smile.gif" },
{character:"barbra" ,gender:"female",type:"speech", text:"$firstname dear, sit. lets chat."},
{character:"barbra" ,gender:"female",type:"speech", text:"$firstname, have you been taking care of yourself?."},
{character:"MC" ,gender:"female",type:"speech", text:"Oh, I<punc>m fine. What about you?"},
{character:"barbra" ,gender:"female",type:"speech", text:"Managing my businesses has been tiring but fruitful. Maybe someone like you can experience it once better."},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "Barbra looks you up and down mockingly" },
{character:"MC" ,gender:"female",type:"speech", text:"Alright then."},
{character: "Narrator", gender: "na", type: "choice", text: "You feel the urge to point out how mean she<punc>s being",
choices: [
{ text: "Speak up", result: $conversation2, statChanges: { barbra:1 }},
{ text: "Stay quiet", result: $skip, statChanges: { barbra:-1 }}
]
}
]>>
<</if>>
<<set $conversation1= $landlordspeak>>
<</nobr>>
<<script>>
$(document).ready(function() {
$("#chat-container").html(window.renderConversation(State.variables.conversation1));
});
<</script>>
<div id="chat"></div>
<<set $bodyShape= $bodyShapeList[2]>>
<<set $done=0>>
<<set $conversation1 = [
{ character: "MC", gender: "feme", type: "narrative", text: "Your body starts to burn with a extreme heat" },
{ character: "Kfi", gender: "male", type: "image", text: "img/events/transform.gif" },
{ character: "MC", gender: "female", type: "thought", text: "Whoa why do i feel so weird? let me check the mirror." },
{ character: "MC", gender: "feme", type: "narrative", text: "You are met with a familiar face" },
{ character: "Kfi", gender: "male", type: "video", text: "img/events/fit-t.mp4" },
{ character: "MC", gender: "feme", type: "narrative", text: "Congratulations on achieving a new body!" },
{ character: "MC", gender: "female", type: "thought", text: "Wow, im so pretty!!!" },
{ character: "MC", gender: "female", type: "thought", text: "Giiiirl, I need to have a chat with Mrs Thompson about becoming a model" },
{character: "Narrator", gender: "na", type: "choice", text: "The sand man blows more sand into your eyes",
choices: [
{ text: "Gather your thoughts", type:"transfer", result:"Bedroom",}
]
}
]>>
<<script>>
$(document).ready(function() {
$("#chat").html(window.renderConversation(State.variables.conversation1));
window.selectOutfit(State.variables.closet["Underwear"][0])
});
<</script>><div id="chat"></div>
<<set $bodyShape= $bodyShapeList[0]>>
<<set $done=0>>
<<set $conversation1 = [
{ character: "MC", gender: "feme", type: "narrative", text: "Your body starts to burn with a extreme heat" },
{ character: "Kfi", gender: "male", type: "image", text: "img/events/transform.gif" },
{ character: "MC", gender: "female", type: "thought", text: "Whoa why do i feel so weird? let me check the mirror." },
{ character: "MC", gender: "feme", type: "narrative", text: "You are met with a familiar face" },
{ character: "Kfi", gender: "male", type: "video", text: "img/events/large-t.mp4" },
{ character: "MC", gender: "feme", type: "narrative", text: "Congratulations on reachieving an old body!" },
{ character: "MC", gender: "female", type: "thought", text: "Wow, im so pretty!!!" },
{ character: "MC", gender: "female", type: "thought", text: "Giiiirl, I guess Mrs Thompson will hate me now" },
{character: "Narrator", gender: "na", type: "choice", text: "The sand man blows more sand into your eyes",
choices: [
{ text: "Gather your thoughts", type:"transfer", result:"Bedroom",}
]
}
]>>
<<script>>
$(document).ready(function() {
$("#chat").html(window.renderConversation(State.variables.conversation1));
window.selectOutfit(State.variables.closet["Underwear"][0])
});
<</script>>
<div id="chat"></div>
<<set $bodyShape= $bodyShapeList[1]>>
<<set $done=0>>
<<set $transformation1 = [
{ character: "MC", gender: "feme", type: "narrative", text: "Your body starts to burn with a extreme heat" },
{ character: "Kfi", gender: "male", type: "image", text: "img/events/transform.gif" },
{ character: "MC", gender: "feme", type: "narrative", text: "You are met with a familiar face" },
{ character: "Kfi", gender: "male", type: "video", text: "img/events/overw-t.mp4" },
{ character: "MC", gender: "feme", type: "narrative", text: "Congratulations on achieving a new body!" },
{ character: "MC", gender: "female", type: "thought", text: "OMG! the exercise if finally paying off" },
{ character: "MC", gender: "female", type: "thought", text: "I could never fit into anything at the mall. But now, things are different" },
{character: "Narrator", gender: "na", type: "choice", text: "You grow weary and long for your bed once more",
choices: [
{ text: "Gather your thoughts", type:"transfer", result:"Bedroom",}
]
}
]>>
<<script>>
State.variables.outfit=`${State.variables.hairColor}-${State.variables.bodyShape}-${State.variables.wornOutfit}`
window.updateJournal();
$(document).ready(function() {
$("#chat").html(window.renderConversation(State.variables.transformation1));
window.selectOutfit(State.variables.closet["Underwear"][0])
});
<</script>>
<<nobr>>
<<switch random(1, 5)>>
<<case 1>>
<<set $randomconvSalon = []>>
<<case 2>>
<<set $randomconvSalon = []>>
<<case 3>>
<<set $randomconvSalon = []>>
<<case 4>>
<<set $randomconvSalon = []>>
<<case 5>>
<<set $randomconvSalon = []>>
<</switch>>
<<set $shopdesc = [
{ character: "Autumn", gender: "female", type: "speech", text: "So basically what we do here is that we permanent hair dye services as well as ..ahem.. massage services" },
{ character: "MC", gender: "female", type: "speech", text: "Is that it." },
{ character: "Autumn", gender: "female", type: "speech", text: "Thats it for now, check back with me in a couple of weeks, our founder Deevey Loper is probably cooking something up" },
]>>
<<set $Ainsult = [
{ character: "Autumn", gender: "female", type: "speech", text: "Im sorry you feel that way" },
]>>
<<set $autumn2 = [
{ character: "Autumn", gender: "female", type: "speech", text: "Im glad you like it little doggie because good pets get treats" },
{ character: "ass", gender: "fem", type: "narrative", text: "She stares at you like a hunter thats found fresh game" },
{ character: "MC", gender: "female", type: "speech", text: "Umm...great" },
{ character: "ass", gender: "fem", type: "narrative", text: "Her eyes snap back to reality " },
{ character: "Autumn", gender: "female", type: "speech", text: "feel free to browse our different services , I recommend the massage" },
]>>
<<set $autumn1 = [
{ character: "ass", gender: "fem", type: "narrative", text: "You walk up to the counter in the back and Autumns little frame comes into view, shes a petite asian woman sporting pink hair and a welcoming smile" },
{ character: "Autumn", gender: "female", type: "image", text: "img/characters/Autumn.jpg" },
{ character: "Autumn", gender: "female", type: "speech", text: "Its a pleasure to meet you $firstname, Im Autumn" },
{ character: "Autumn", gender: "female", type: "speech", text: "Your hair is so healthy babe, youre like my cute little doggie" },
{character: "Narrator", gender: "na", type: "choice", text: "Autumn glances at you and beams another friendly smile.",
choices: [
{ text: "Thats a little mean", result: $Ainsult},
{ text: "Woof woof", result: $autumn2, statChanges: { autumn:+1 }}
]
}]>>
<<set $conversation = [ { character: "Autumn", gender: "female", type: "speech", text: "Hey there sweetie, You looking Vibe up that hair?" } ,
{character: "Narrator", gender: "na", type: "choice", text: "Autumn glances at you and beams a friendly smile in your direction before she continues what shes doing.",
choices: [
{ text: "Ask about the Store", result: $shopdesc},
{ text: "Introduce Yourself", result: $autumn1, statChanges: { autumn:+1 }},
{ text: "Go to Spa", type:"transfer", result: "Park", statRequirements:[{stat:"money",threshold:13434334345}]}
]
}]>>
<<set $selectedItem = $selectedItem or "">>
<!-- Render conversation -->
<div id="achat-container2"></div>
<div id="achat-container"></div>
<<do>>
<<script>>
$(document).ready(function() {
$("#achat-container").html(window.renderConversation(State.variables.conversation));
$("#achat-container2").html(window.renderConversation(State.variables.randomconvSalon));
});
<</script>>
<</do>>
<</nobr>>
<<button "Ask her something else">><<redo>><</button>>
<!-- Store Layout -->
<div class="store-container">
<!-- Items Grid Section -->
<div class="store-left">
<h1>Odai body Studio</h1>
<div id="itemGrid" class="item-grid">
<!-- Items will be loaded dynamically -->
</div>
</div>
<!-- Preview & Purchase Section -->
<div class="store-right">
<h3>Item Preview</h3>
<img id="itemPreview" class="item-preview" width="200px" src="img/items/generic2.png" alt="Item Preview">
<p id="itemDescription">Select an item to see details.</p>
<<button "Buy Item">>
<<set $purchasedItem = $selectedItem>>
<<set $outfit=$outfit>>
<<script>>
if(State.variables.money-State.variables.selectedItem.price>0){
State.variables.money-=State.variables.selectedItem.price;
switch(State.variables.selectedItem.qpointer){
case "Red":
State.variables.hairColor = State.variables.hairColorList[1];
window.selectOutfit(State.variables.closet["Casual Clothing"][0]);
alert("Your hair color is fiery red! ");
break;
case "Blonde":
State.variables.hairColor = State.variables.hairColorList[3]
window.selectOutfit(State.variables.closet["Casual Clothing"][0])
alert("Your hair color is now a golden blonde ");
break;
case "Black":
State.variables.hairColor = State.variables.hairColorList[2]
window.selectOutfit(State.variables.closet["Casual Clothing"][0])
alert("Your hair color is now an Icey black! ");
break;
case "Brunette":
State.variables.hairColor = State.variables.hairColorList[0]
window.selectOutfit(State.variables.closet["Casual Clothing"][0])
alert("Your hair color is now a chestnut brunette! ");
break;
}
}
<</script>>
<<redo>>
<</button>>
</div>
</div>
<<button "Leave" "Mall">><</button>>
<style>
.store-container {
display: flex;
flex-wrap: wrap;
max-width: 900px;
margin: 1em auto;
gap: 1em;
padding: 1em;
background-color: #f7f7f760;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}
.store-left, .store-right {
flex: 1 1 300px;
padding: 0.5em;
}
.store-left h1 {
text-align: center;
margin-bottom: 0.5em;
}
.item-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
grid-gap: 1em;
}
.store-item {
background: #cfd1d060;
border: 1px solid #ddd;
border-radius: 4px;
padding: 0.5em;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s ease;
}
.store-item:hover {
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.store-item img {
max-width: 100%;
height: auto;
border-radius: 4px;
}
.store-item h4 {
margin: 0.5em 0 0.2em;
font-size: 0.8em;
}
.store-item p {
font-size: 0.9em;
margin: 0.2em 0;
}
.item-preview {
width: 100%;
max-width: 300px;
height: auto;
display: block;
margin: 0 auto;
border-radius: 4px;
}
.store-right {
text-align: center;
}
.store-right h3 {
margin-bottom: 0.5em;
}
.store-right button, .store-right a {
margin-top: 0.5em;
padding: 0.5em 1em;
font-size: 1em;
border: none;
border-radius: 4px;
background-color: #4CAF50;
color: white;
cursor: pointer;
text-decoration: none;
}
.store-right button:hover, .store-right a:hover {
background-color: #45a049;
}
</style>
<<script>>
$(document).ready(function() {
// Populate the item grid with store items from $general
var Items = State.variables.salonStuff;
var $grid = $("#itemGrid");
$grid.empty();
if (Items.length === 0) {
$grid.html("<p>No items available at the store.</p>");
} else {
Items.forEach(function(item) {
var $div = $("<div>")
.addClass("store-item")
.html(`
<h4>${item.name}</h4>
`)
.on("click", function() {
State.variables.selectedItem = item;
$("#itemPreview").attr("src", item.img);
$("#itemDescription").text(item.name + " costs $" + item.price);
});
$grid.append($div);
});
}
});
<</script>>
<<nobr>>
/* --- Initial Svetlana Conversation --- */
<<set $svetlanaConversation = [
{ character: "Svetlana", gender: "female", type: "narrative", text: "You step into Svetlana's Closet—a chic boutique with lavish fabrics, ornate mirrors, and a subtle hint of old-world charm." },
{ character: "Svetlana", gender: "female", type: "speech", text: "Dobry den, darling. I am Svetlana. Welcome to my store, where we dress not just bodies, but dreams." },
{ character: "Svetlana", gender: "female", type: "speech", text: "Feel free to browse my collection. Let me know if something catches your eye." }
/* Removed the renovation and choice parts for a direct store experience */
]>>
<<set $selectedItemForPurchase = null>> /* Variable to hold item details for interaction */
/* --- Render Initial Conversation --- */
<div id="chat-container"></div>
/* Removed the "Ask her something else" button, interaction happens via items */
<</nobr>>
<<nobr>>
/* --- Store Interface --- */
<div class="closet-container store-container"> /* Added store-container class for potential styling */
<div class="closet-left store-left">
<h2>Svetlana's Closet</h2> <p>Browse by category:</p>
<select id="outfitTypeDropdown" class="dropdown"></select>
<div class="outfit-grid" id="outfitGrid">
</div>
<div class="item-interaction" id="itemInteraction">
Select an item to see details and discuss it with Svetlana.
</div>
</div>
<div class="closet-right store-right">
<h3>Preview</h3>
<div id="image-journal">
<img class="head-img2" src="img/logo1.png" alt="Preview Head">
<img class="upper-img2" src="img/logo2.png" alt="Preview Upper Body">
<img class="lower-img2" src="img/logo3.png" alt="Preview Lower Body">
</div>
</div>
</div>
<</nobr>>
<<script>>
$(document).ready(function() {
var outfitDropdown = $("#outfitTypeDropdown");
outfitDropdown.empty(); // Clear existing options
// Ensure State.variables.closet exists and is an object
if (State.variables.closet && typeof State.variables.closet === "object") {
Object.keys(State.variables.closet).forEach(function(category) {
outfitDropdown.append(`<option value="${category}">${category}</option>`);
});
} else {
console.error("State.variables.closet is undefined or not an object!");
// Optionally provide feedback to the user/developer in the game UI
$("#outfitGrid").text("Error: Clothing data is missing.");
}
// Function to update the outfit selection grid (showing only unowned items)
function updateOutfitSelection() {
var outfitType = outfitDropdown.val();
var outfitGrid = $("#outfitGrid");
var itemInteraction = $("#itemInteraction");
outfitGrid.empty(); // Clear previous items
itemInteraction.html("Select an item to see details and discuss it with Svetlana."); // Reset interaction pane
var outfits = State.variables.closet[outfitType] || [];
if (outfits.length === 0) {
console.warn("No outfits found for category:", outfitType);
outfitGrid.text("No items in this category."); // User feedback
return; // Exit function early
}
var itemsAvailable = false; // Flag to check if any items are for sale in this category
outfits.forEach(function(outfit) {
// Only display items the player doesn't own
if (!outfit.owned) {
itemsAvailable = true;
var $div = $("<div>")
.addClass("outfit-item store-item") // Added store-item class
.html(`<img src="img/outfits/${outfit.img}" alt="${outfit.name}"><br>${outfit.name} ($${outfit.price})`) // Show price
.data("outfit", outfit) // Store outfit data directly on the element
.on("click", function() {
// Call the new interaction function instead of selectOutfit
showItemDetailsAndInteraction($(this).data("outfit"), $(this));
// No need for window.updateJournal() here unless it's relevant for store preview
});
outfitGrid.append($div);
}
});
if (!itemsAvailable) {
outfitGrid.text("No items currently available for purchase in this category.");
}
}
// Function to show item details and Svetlana's interaction
function showItemDetailsAndInteraction(outfit, element) {
State.variables.selectedItemForPurchase = outfit; // Store selected item details if needed later
// 1. Update Preview Images
// Use existing preview logic, assuming getCharacterPreview works for item keys
$(".head-img2").attr("src", getCharacterPreview(outfit)); // Use the outfit object passed
// Construct image paths using data from the outfit object
$(".upper-img2").attr("src", `img/outfits/${outfit.imageKey}-${State.variables.bodyShape}-upper-${State.variables.uppershape}.png`);
$(".lower-img2").attr("src", `img/outfits/${outfit.imageKey}-${State.variables.bodyShape}-lower-${State.variables.lowershape}.png`);
// 2. Display Svetlana's Dialogue and Options in the interaction pane
var itemInteraction = $("#itemInteraction");
var interactionHTML = `
<div class="svetlana-speech">
<strong>Svetlana:</strong> ${outfit.svetlanaDialogue || "A fine choice, my dear. Truly exquisite."}
</div>
<div class="purchase-options">
<<button "Buy ${outfit.name} ($${outfit.price})">>
/*Purchase Logic*/
<<if $money >= State.variables.selectedItemForPurchase.price>>
<<set $money -= State.variables.selectedItemForPurchase.price>>
<<set State.variables.selectedItemForPurchase.owned = true>>
<<replace "#itemInteraction">>Thank you for your purchase, darling! You have excellent taste.<</replace>>
<<run $('#outfitGrid .store-item').filter(function() { return $(this).data('outfit').name === State.variables.selectedItemForPurchase.name; }).remove()>> /* Remove item from view */
/* <<else>> */
/* <<replace "#itemInteraction">>Svetlana looks you over. "Ah, perhaps another time, darling? It seems the funds are a little short."<</replace>> */
/* <</if>> */
/* --- Placeholder for demonstration --- */
<<replace "#itemInteraction">>
<br>
<br><br>
<<button "Browse other items">>
<<run $("#itemInteraction").html("Select an item to see details and discuss it with Svetlana.")>>
<<run $(".outfit-item").removeClass("selected")>>
<</button>>
<</replace>>
<</button>>
<<button "Maybe later">>
<<run $("#itemInteraction").html("Select an item to see details and discuss it with Svetlana.")>>
<<run $(".outfit-item").removeClass("selected")>> /* Deselect visually */
<</button>>
</div>
`;
// Use Wikifier to process Twine markup within the HTML string
itemInteraction.empty().wiki(interactionHTML);
// 3. Highlight the selected item visually
$(".outfit-item").removeClass("selected");
element.addClass("selected");
}
// Function to get the correct head image preview (ensure it accepts the outfit object)
function getCharacterPreview(outfit) { // Modified to accept outfit object
// Build the head image string using the naming convention:
// {hairColor}-{bodyShape}-{imageKey}.png (if not custom)
// Use outfit.imageKey and outfit.custom
var previewKey = `${outfit.custom ? "" : State.variables.hairColor + "-"}${State.variables.bodyShape}-${outfit.imageKey}`;
// We don't need to set State.variables.outfit here, just return the path
return `img/outfits/${previewKey}.png`;
}
// Initialize outfit selection on page load
updateOutfitSelection();
// Update outfit selection when the dropdown changes
outfitDropdown.on("change", updateOutfitSelection);
// Render the initial conversation
$("#chat-container").html(window.renderConversation(State.variables.svetlanaConversation));
});
<</script>>
/* Keep the main leave button */
<<button "Leave Store" "Mall">><</button>><<set $membershipCost = 100>>
<<set $dayPassCost = 30>>
<h2>Gym Reception</h2>
<p>Bella, the fit receptionist, greets you with a bright smile.</p>
<<if $gymMembership===0>>
<<set $gymconversation = [
{ character: "Bella", gender: "female", type: "speech", text: "Hola chica! Welcome to Moggers Gym, get ready to mog!" },
{ character: "MC", gender: "female", type: "choice", text: "Do you chat with the Receptionist?",
choices: [
{ text: "Introduce yourself",
result: [
{ character: "k", gender: "ale", type: "narrative", text: "The latina receptionist stands before you. Her face toned by her caramel skin and even more alluring eyes." },
{ character: "kyle", gender: "ale", type: "image", text: "img/characters/Bella.jpg" },
{ character: "MC", gender: "female", type: "speech", text: "Hi, im new to this whole gym thing. I don<punc>t even know where to start." },
{ character: "Bella", gender: "female", type: "speech", text: "That<punc>s not an issue. Im here to help you find your way around. I<punc>m Bella by the way." },
{ character: "MC", gender: "female", type: "speech", text: "It<punc>s nice to meet you Bella. I<punc>m $firstname." },
{ character: "Bella", gender: "female", type: "speech", text: "OK $firstname, We have state of the art equipment as well as great staff. I<punc>m sure you<punc>ll find something that<punc>s muy fatastica." },
]
},
{ text: "Membership info",
result: [
{ character: "Bella", gender: "female", type: "speech", text: "Looks like you arent a member now. You can join for "+$membershipCost +" per week." },
{ character: "Bella", gender: "female", type: "speech", text: "Theres also a day pass for "+$dayPassCost +" per day." },
{character: "Narrator", gender: "na", type: "choice", text: "Which memebrship type do you choose?",
choices: [
{ text: "Get a week pass", result: [
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ll take the week pass." },
{ character: "Bella", gender: "female", type: "speech", text: "awesome, you now have access to the gym." },
],statChanges: { money:-$membershipCost ,gymMembership:7 }, statRequirement: { stat: "money", threshold: $membershipCost } },
{ text: "Get a day pass", result:[
{ character: "MC", gender: "female", type: "speech", text: "I<punc>ll take the day pass." },
{ character: "Bella", gender: "female", type: "speech", text: "awesome, you now have access to the gym for one day." },
],statChanges: { money:-$dayPassCost , gymMembership:1}, statRequirement: { stat: "money", threshold: $dayPassCost } }
]}
]
}
]
}
]>>
<<elseif $gymMembership> 0>>
<<set $gymconversation = [
{ character: "Bella", gender: "female", type: "speech", text: "Hola chica! Welcome to Moggers Gym, get ready to mog!" },
{ character: "MC", gender: "female", type: "choice", text: "Do you chat with the Receptionist?",
choices: [
{ text: "Introduce yourself",
result: [
{ character: "k", gender: "ale", type: "narrative", text: "The latina receptionist stands before you. Her sexy face toned by her caramel skin and even more alluring eyes." },
{ character: "kyle", gender: "ale", type: "image", text: "img/characters/Bella.jpg" },
{ character: "MC", gender: "female", type: "speech", text: "Hi, im new to this whole gym thing. I don<punc>t even know where to start." },
{ character: "Bella", gender: "female", type: "speech", text: "That<punc>s not a problem chica. Im here to help you find jour way around. I<punc>m Isabela but you can call me Bella." },
{ character: "MC", gender: "female", type: "speech", text: "It<punc>s nice to meet you Bella. I<punc>m $firstname." },
{ character: "Bella", gender: "female", type: "speech", text: "OK $firstname, We have state of the art equipment as well as great staff. I<punc>m sure you<punc>ll find something that<punc>s muy fatastica." },
]
},]}]>>
<</if>>
<div id="gymchat-container"></div>
<<button "Ask her something else">><<redo>><</button>>
<<do>>
<<if $gymMembership > 0 and $wornOutfit==="gym">>
<<button "Enter Gym" "GymFloor">><</button>>
<<elseif $gymMembership > 0 and $wornOutfit!="gym">>
<<button "Enter Gym">>
<<set $gymconversation = [
{ character: "Bella", gender: "female", type: "speech", text: "Sorry chica! You cant enter the gym in casual clothes yet. Go home and change into some <animate>gym clothes</animate>." },
]>>
<<script>>
$(document).ready(function() {
$("#gymchat-container").html(window.renderConversation(State.variables.gymconversation));
});
window.scrollTo(0, 0);
<</script>>
<</button>>
<<else>>
<<button "Membership card declined: try again?" >><<redo>><</button>>
<</if>>
<</do>>
<<button "Leave" "Mall">><</button>>
<<do>><<script>>
$(document).ready(function() {
$("#gymchat-container").html(window.renderConversation(State.variables.gymconversation));
});
<</script>><</do>>
<h2>Gym Floor (Work in progress)</h2>
<p>You enter the gym floor where two personal trainers, Coach Mike and Trainer Lisa, stand chatting and watching the workout area.</p>
<<set $conversation = [
{ character: "Trainer Lisa", gender: "female", type: "choice", text: "Choose your workout:",
choices: [
{ text: "Weightlifting",
result: [
{ character: "Lisa", gender: "female", type: "speech", text: "Great choice! Let's build some muscle." },
{ character: "Narrator", gender: "na", type: "speech", text: "You feel your strength increase as you lift weights." }
],
statChanges: { fitness: window.statGainDropper("Weightlifting"), energy: -15 }, statRequirement: { stat: "energy", threshold: 15 }
},
{ text: "Circuit Training",
result: [
{ character: "Mike", gender: "male", type: "speech", text: "Circuit training will boost your stamina quickly." },
{ character: "Narrator", gender: "na", type: "speech", text: "You push through an intense circuit, feeling both sweat and satisfaction." }
],
statChanges: { fitness: window.statGainDropper("Circuit Training"), energy: -30 }, statRequirement: { stat: "energy", threshold: 30 }
},
{ text: "Yoga",
result: [
{ character: "Lisa", gender: "female", type: "speech", text: "Yoga will improve your flexibility and calm your mind." },
{ character: "Narrator", gender: "na", type: "speech", text: "You feel your body relax and your mind clear during the yoga session." }
],
statChanges: { fitness: window.statGainDropper("Yoga"), energy: -15 }, statRequirement: { stat: "energy", threshold: 15 }
},
{ text: "Spinning",
result: [
{ character: "Mike", gender: "male", type: "speech", text: "Spinning is intense, but it burns tons of calories!" },
{ character: "Narrator", gender: "na", type: "speech", text: "You pedal furiously and feel your heart racing." }
],
statChanges: { fitness: window.statGainDropper("Spinning"), energy: -20 }, statRequirement: { stat: "energy", threshold: 20 }
}
]
}
]>>
<div id="gfloorchat-container"></div>
<do><<script>>
$(document).ready(function() {
$("#gfloorchat-container").html(window.renderConversation(State.variables.conversation))
});
<</script>></do>
<<button "Do something else">><<redo>><</button>>
<<link "Return to Reception" "Gym Reception">><</link>>
<<set $com = [
{
"character": "MC",
"gender": "female",
"type": "actions",
"text": "Pushing the door open, she stepped into the office, her stilettos clicking against the polished wooden floor. She was dressed to impress, her dress hugging her curves in all the right places. She could feel the silk of her dress against her skin, the cool air against her legs as her dress rode up slightly with each step."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "He looked up from his desk, his eyes widening as he took her in. He stood up, buttoning his suit jacket, trying to maintain some semblance of professionalism. MC, what can I do for you? he asked, his voice slightly huskier than usual."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "I was hoping we could discuss my... promotion, Kyle. She emphasized the word, her voice laced with innuendo. She walked towards him, her hips swaying slightly, her eyes locked onto his."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "He swallowed hard, trying to maintain his composure. He gestured to the chair in front of his desk, Please, have a seat."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "She ignored the chair, instead walking around to the other side of his desk. She leaned over, her cleavage on full display, as she picked up a pen and twirled it in her fingers. I think we can discuss this... intimately, don't you?\" she suggested, her voice barely above a whisper."
},
{
"character": "Node 1",
"gender": "na",
"type": "choice",
"text": "Choose an option:",
"choices": [
{
"text": "Option 2",
"result": [
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "His breath hitched as she leaned over, her breasts pressing against the cool wood of the desk. He could feel his cock twitching in response, his pants suddenly feeling very tight."
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "She looked up at him from under her lashes, a wicked smile playing on her lips. She reached out, her fingers trailing along his inner thigh, making him jump slightly. She could feel the heat radiating from him, could see the outline of his cock straining against his pants."
},
{
"character": "Kyle",
"gender": "male",
"type": "speech",
"text": "\"MC, what are you doing?\" he asked, his voice barely a whisper. He knew he should stop her, but he couldn't find the willpower to do so."
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "Shhh, she whispered, her fingers finding the button of his pants. She popped it open, her eyes never leaving his. I'm just... negotiating, she said, her voice laced with mischief."
},
{
"character": "Kyle",
"gender": "male",
"type": "actions",
"text": "He let out a groan as she pulled down his zipper, his cock springing free. He felt her cool fingers wrap around his shaft, her thumb rubbing against the head, spreading the bead of pre-cum that had formed there."
},
{
"character": "MC",
"gender": "female",
"type": "actions",
"text": "She leaned down, her tongue flicking out to lick the head of his cock. She could taste the salty sweetness of him, could feel him pulse in her hand. She looked up at him, her mouth open, her tongue out, as she slowly took him into her mouth."
}
]
}
]
}
]>>
<div id="chat-container"></div>
<<script>>
$(document).ready(function() {
$("#chat-container").html(window.renderConversation(State.variables.com));
});
<</script>><<nobr>>
<<set $shopdesc = [
{ character: "Janice", gender: "female", type: "speech", text: "Alright, so here at Resistance Circuits, we provide ethically sourced, fair-trade, non-oppressive electronics! Also, we fix your busted gadgets, assuming they weren<punc>t built with capitalist obsolescence in mind." },
{ character: "MC", gender: "female", type: "speech", text: "That<punc>s something." },
{ character: "Janice", gender: "female", type: "speech", text: "It<punc>s a revolution in consumer technology! Come back in a few weeks—our founder, Techno-Marxist Devin Loper, is always cooking up new ways to fight Big Silicon!" },
]>>
<<set $Jinsult = [
{ character: "Janice", gender: "female", type: "speech", text: "I see that your deep in the clutches of corporate greed comrade." },
]>>
<<set $janice2 = [
{ character: "Janice", gender: "female", type: "speech", text: "Ah, a fellow resistor in the system! Good customers get the best discounts… or at least, they get to hear my TED Talk on why net neutrality is a human right!" },
{ character: "Narrator", gender: "na", type: "narrative", text: "She adjusts her glasses dramatically, like she<punc>s about to deliver an important manifesto." },
{ character: "MC", gender: "female", type: "speech", text: "Uh… neat." },
{ character: "Narrator", gender: "na", type: "narrative", text: "Her eyes snap back to reality." },
{ character: "Janice", gender: "female", type: "speech", text: "Feel free to browse! I recommend our refurbished devices—they<punc>re better for the environment AND your soul." },
]>>
<<set $janice1 = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You approach the cluttered counter at the back of the store, where Janice—an energetic woman with thick glasses and a sexy sweater dress greets you with a mischievous grin." },
{ character: "Janice", gender: "female", type: "image", text: "img/characters/janice-full.jpeg" },
{ character: "Janice", gender: "female", type: "speech", text: "Oh, hey there, comrade! Name<punc>s Janice. What<punc>s your relationship with the digital industrial complex?" },
{ character: "Janice", gender: "female", type: "speech", text: "Your aura is giving <punc>future hacker<punc> vibes. I dig it!" },
{character: "Narrator", gender: "na", type: "choice", text: "Janice adjusts her glasses and leans in conspiratorially.",
choices: [
{ text: "That<punc>s a little much", result: $Jinsult},
{ text: "Uh… thanks?", result: $janice2, statChanges: { janice:+1 }}
]
}]>>
<<set $elecstoreconversation = [ { character: "Janice", gender: "female", type: "speech", text: "Hey there, rebel! Looking to liberate your tech today?" } ,
{character: "Narrator", gender: "na", type: "choice", text: "Janice watches you eagerly, ready to convert you to her cause.",
choices: [
{ text: "Ask about the Store", result: $shopdesc},
{ text: "Introduce Yourself", result: $janice1, statChanges: { janice:+1 }},
{ text: "Discount", result: $discounelec},
]
}]>>
<<set $selectedItem = $selectedItem or "">>
<!-- Render conversation -->
<div id="echat-container"></div>
<</nobr>>
<<do>>
<<script>>
$(document).ready(function() {
$("#echat-container").html(window.renderConversation(State.variables.elecstoreconversation));
});
<</script>>
<</do>>
<<button "Ask her something else">>
<<script>>
window.scrollTo(0, 0);
<</script>>
<<redo>><</button>>
<!-- Store Layout -->
<div class="store-container">
<!-- Items Grid Section -->
<div class="store-left">
<h1>Electronics Store</h1>
<div id="itemGrid" class="item-grid">
<!-- Items will be loaded dynamically -->
</div>
</div>
<!-- Preview & Purchase Section -->
<div class="store-right">
<h3>Item Preview</h3>
<img id="itemPreview" class="item-preview" width="250px" src="img/items/placeholder.png" alt="Item Preview">
<p id="itemDescription">Select an item to see details.</p>
<<button "Buy Item">>
<<set $purchasedItem = $selectedItem>>
<<redo>>
<<script>>
if(State.variables.money-State.variables.selectedItem.price>0){
State.variables.money-=State.variables.selectedItem.price;
switch(State.variables.selectedItem.name){
case "Smart Phone":
if(State.variables.electronics[0]["owned"]===false){
State.variables.electronics[0]["owned"]= true
alert(`You've bought a ${State.variables.selectedItem.name} congratulations!`);
}else {
State.variables.money+=State.variables.selectedItem.price;
alert(`You already own a ${State.variables.selectedItem.name}`);
}
break;
case "Sound system":
if(State.variables.electronics[1]["owned"]===false){
State.variables.electronics[1]["owned"]= true
alert(`You've bought ${State.variables.selectedItem.name}`);
}else {
State.variables.money+=State.variables.selectedItem.price;
alert(`You already own a ${State.variables.selectedItem.name}`);
}
break;
case "4k Smart TV":
if(State.variables.electronics[2]["owned"]===false){
State.variables.electronics[2]["owned"]= true
alert(`You've bought ${State.variables.selectedItem.name}`);
}else {
State.variables.money+=State.variables.selectedItem.price;
alert(`You already own a ${State.variables.selectedItem.name}`);
}
break;
case "Breast Milk Pump":
if(State.variables.electronics[3]["owned"]===false){
State.variables.electronics[3]["owned"]= true
alert(`You've bought ${State.variables.selectedItem.name}`);
}else {
State.variables.money+=State.variables.selectedItem.price;
alert(`You already own a ${State.variables.selectedItem.name}`);
}
break;
case "Coffee Machine":
if(State.variables.electronics[4]["owned"]===false){
State.variables.electronics[4]["owned"]= true
alert(`You've bought ${State.variables.selectedItem.name}`);
}else {
State.variables.money+=State.variables.selectedItem.price;
alert(`You already own a ${State.variables.selectedItem.name}`);
}
}
}
<</script>>
<</button>>
</div>
</div>
<<button "Leave" "Central District">><</button>>
<style>
.store-container {
display: flex;
flex-wrap: wrap;
max-width: 900px;
margin: 1em auto;
gap: 1em;
padding: 1em;
background-color: #f7f7f760;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}
.store-left, .store-right {
flex: 1 1 300px;
padding: 0.5em;
}
.store-left h1 {
text-align: center;
margin-bottom: 0.5em;
}
.item-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
grid-gap: 1em;
}
.store-item {
background: #cfd1d060;
border: 1px solid #ddd;
border-radius: 4px;
padding: 0.5em;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s ease;
}
.store-item:hover {
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.store-item img {
max-width: 100%;
height: auto;
border-radius: 4px;
}
.store-item h4 {
margin: 0.5em 0 0.2em;
font-size: 0.8em;
}
.store-item p {
font-size: 0.9em;
margin: 0.2em 0;
}
.item-preview {
width: 100%;
max-width: 300px;
height: auto;
display: block;
margin: 0 auto;
border-radius: 4px;
}
.store-right {
text-align: center;
}
.store-right h3 {
margin-bottom: 0.5em;
}
.store-right button, .store-right a {
margin-top: 0.5em;
padding: 0.5em 1em;
font-size: 1em;
border: none;
border-radius: 4px;
background-color: #4CAF50;
color: white;
cursor: pointer;
text-decoration: none;
}
.store-right button:hover, .store-right a:hover {
background-color: #45a049;
}
</style>
<<script>>
$(document).ready(function() {
// Populate the item grid with store items from $general
var generalItems = State.variables.electronics ;
var $grid = $("#itemGrid");
$grid.empty();
if (generalItems.length === 0) {
$grid.html("<p>No items available at the store.</p>");
} else {
generalItems.forEach(function(item) {
if (!item.owned) { // Only add items that are NOT owned
var $div = $("<div>")
.addClass("store-item")
.html(`
<h4>${item.name}</h4>
`)
.on("click", function() {
State.variables.selectedItem = item;
$("#itemPreview").attr("src", item.img);
$("#itemDescription").text(item.name + " costs $" + item.price);
});
$grid.append($div);
}
});
}
});
<</script>>
<h2>Sunspot Beach greets you</h2>
<p>You wander along the beach, enjoying the sun and the sound of the waves. What would you like to do?</p>
<div id="action-display" style="margin-top: 1em;"></div>
<<button "Sell your sweet milk">>
<<set _rand = Math.random()>>
<<set $milkprice = random(30,70) * $usnum>>
<<if _rand < 0.4 and $usnum>0 and $wornOutfit === "milkgirl">>
/* No customer - simple narrative */
<<set $milksellconversation = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You attempt to sell your milk, but no one seems interested today." }
]>>
<<elseif _rand > 0.4 and _rand<0.7 and $usnum>0 and $wornOutfit === "milkgirl">>
/* Customer appears - choice presented */
<<set $milksellconversation = [
{
character: "Customer", gender: "male", type: "choice",
text: "That milk looks delicious! I<punc>m willing to pay $"+$milkprice+" for a bottle.",
choices: [
{
text: "Sell Milk "+"($"+$milkprice+")",
result: [ /* Conversation array rendered by handleChoice on success */
{ character: "Narrator", gender: "na", type: "narrative", text: "You sell a bottle of milk and earn $"+$milkprice+"." }
],
statChanges: { money: $milkprice, milkBuckets: -1 },
/* Pass requirements directly to the choice object for handleChoice/renderChatBlock */
statRequirements: [ { stat: "milkBuckets", threshold: 1 }, { stat: "usnum", threshold: 1 } ]
},
{
text: "Decline",
result: [ /* Conversation array rendered by handleChoice on decline */
{ character: "stranger1", gender: "male", type: "speech", text: "Alright, maybe another time." }
],
statChanges: {} /* No stat changes */
/* No stat requirements for declining */
}
]
}
]>>
<<elseif _rand>0.7 and $usnum>0 and $wornOutfit === "milkgirl">>
<<set $milksellconversation = [
{
character: "stranger1", gender: "male", type: "choice",
text: "That milk looks delicious! I<punc>m willing to pay $"+$milkprice*3+" if you let me drink it from the source.",
choices: [
{
text: "Let him suck your breasts"+"($"+$milkprice*3+")",
result: [ /* Conversation array rendered by handleChoice on success */
{ character: "Narrator", gender: "na", type: "narrative", text: "You lead him to a secluded area." },
{ character: "Narrator", gender: "na", type: "video", text: "img/events/"+$bodyShape+"-bf.webm" }
],
statChanges: { money: $milkprice*3 },
statRequirements: [ { stat: "milkBuckets", threshold: 1 }, { stat: "usnum", threshold: 1 } ]
},
{
text: "Decline",
result: [ /* Conversation array rendered by handleChoice on decline */
{ character: "stranger1", gender: "male", type: "speech", text: "Alright, maybe another time." }
],
statChanges: {} /* No stat changes */
/* No stat requirements for declining */
}
]
}
]>>
<<else>>
/* No surgery- simple narrative */
<<set $milksellconversation = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You see a milk seller." },
{ character: "MC", gender: "female", type: "thought", text: "Maybe I could ask her about the milk cow business." },
{ character: "MC", gender: "female", type: "speech", text: "Hey!, how do i get into the milk cow business like you." },
{ character: "stranger2", gender: "female", type: "speech", text: "Oh it<punc>s super easy. just get bigger boobs at the hospital and a pump baby! " },
{ character: "stranger2", gender: "female", type: "speech", text: "Oh yeah, make sure you also buy a milkgirl swimsuit like mine " },
{ character: "Narrator", gender: "na", type: "narrative", text: "She jumps up and down, showing off her swimsuit." },
{ character: "stranger2", gender: "female", type: "video", text: "img/events/milkgirljump.mp4" },
{ character: "stranger2", gender: "female", type: "speech", text: "This stuff is a gold mine and the customers are really nice. " },
{ character: "MC", gender: "female", type: "speech", text: "Awesome, thanks for the advice!" },
{ character: "stranger2", gender: "female", type: "speech", text: "You<punc>re welcome hot stuff. " },
]>>
<</if>>
<<script>>
window.scrollTo(0, 0);
window.advanceTime();
$('#action-display').html(window.renderConversation(State.variables.milksellconversation));
<</script>>
<</button>>
<<if $wornOutfit === "bikini" or $wornOutfit === "milkgirl">>
<<button "Lay on the beach">>
<<set _index = random(1,3)>>
<<if _index == 0>>
<<set $conversation = [ { character: "MC", gender: "female", type: "speech", text: "This is the perfect spot to relax, isn't it?" } ]>>
<<elseif _index == 1>>
<<set $conversation = [ { character: "MC", gender: "male", type: "speech", text: "I love the sound of the waves – it's so calming." } ]>>
<<elseif _index == 2>>
<<set $conversation = [ { character: "MC", gender: "na", type: "speech", text: "Nothing beats a lazy day on the beach." } ]>>
<<else>> /* Changed from elseif _index == 3 for default case */
<<set $conversation = [ { character: "Local", gender: "male", type: "speech", text: "Have you tried the coconut water here? It's refreshing!" } ]>>
<</if>>
<<do>><<script>>
window.scrollTo(0, 0);
window.advanceTime();
$('#action-display').html(window.renderConversation(State.variables.conversation));
<</script>><</do>>
<</button>>
<<else>>
Wear your swimsuit to lay on the beach.
<</if>>
<<button "Stroll on the beach">>
<<set _index = random(1,3)>>
<<if _index == 0>>
<<set $strollconversation = [ { character: "stranger1", gender: "male", type: "speech", text: "I'm enjoying this walk along the coast—the view is amazing!" } ]>>
<<elseif _index == 1>>
<<set $conversation = [ { character: "stranger2", gender: "female", type: "speech", text: "I see you around here often. Enjoying the breeze?" } ]>>
<<elseif _index == 2>>
<<set $strollconversation = [ { character: "stranger1", gender: "trans", type: "speech", text: "I come here every day to clear my mind. It's lovely." } ]>>
<<else>> /* Changed from elseif _index == 3 for default case */
<<set $strollconversation = [
{ character: "stranger1", gender: "male", type: "speech", text: "This beach is incredible! The sunset is breathtaking." },
{ character: "stranger1", gender: "male", type: "speech", text: "Hey girl you look like a good romp, wanna fuck?" },
{ character: "MC", gender: "female", type: "thought", text: "How forward." },
{
character: "stranger1", gender: "male", type: "choice",
text: "Do you lead him home?",
choices: [
{
text: "go home with him",
type:"transfer",
result :"RandomSex",
statChanges: { money: 50 },
statRequirements: [ { stat: "deviancy", threshold: 30 }]
}
]
}
]>>
<</if>>
<<script>>
window.advanceTime();
window.scrollTo(0, 0);
$('#action-display').html(window.renderConversation(State.variables.strollconversation));
<</script>>
<</button>>
/*<<button "Beach Bathroom (Change Clothes)">>
<<set $conversation = [
{ character: "Narrator", gender: "na", type: "speech", text: "You enter the beach bathroom to change clothes. [Insert logic here]" }
]>>
<<script>>
window.scrollTo(0, 0);
$('#action-display').html(window.renderConversation(State.variables.conversation));
<</script>>
<</button>>*/
<<button "Leave" "bus">><</button>>
<hr>
<!-- Advance time by 2 step -->
<<script>>
window.advanceTime(2);
<</script>>
<<set $previousPassage = previous()>>
<!-- Random walk Event -->
<<switch random(1,4)>>
<<case 1>>
<<set $walkEvent = [
{ character: "MC", gender: "female", type: "narrative", text: "You're walking home and lost in your own little world, when suddenly a hand reaches out and grabs you from behind, pulling you off balance." },
{ character: "Stranger1", gender: "male", type: "speech", text: "Hand over your purse, bitch!" },
{ character: "MC", gender: "female", type: "thought", text: "What the fuck, this is not what I need right now." },
{ character: "Stranger1", gender: "male", type: "speech", text: "Move slower, and I won't hurt you!" },
{ character: "MC", gender: "female", type: "image", text: "img/mug.jpg" },
{ character: "Narrator", gender: "na", type: "choice", text: "What do you do??", choices: [
{ text: "Give him money", type: "transfer", result: $destination, statChanges: { money:-$money*0.25 } },
{ text: "Jerk him 25"+$devi, type: "transfer", result: [
{ character: "Narrator", gender: "na", type: "choice", text: "Hes dazed what do you do?", choices: [
{ text: "Leave", type: "transfer", result: $destination, }
]}
] },
{ text: "Fight him 70 "+$fiti, type: "transfer", result: "Beach" statChanges: { fitness:+1 }, statRequirement: { stat: "fitness", threshold: 50 }, }
]}
] >>
<<case 2>>
<<set $walkEvent = [
{ character: "Bus Driver", gender: "male", type:"speech", text:"Hope you<punc>re ready for a smooth ride!" },
{ character: "Narrator", gender: "na", type: "choice", text: "Where are you going?", choices: [
{ text: "Continue", type: "transfer", result: $destination }
]>>
<<case 3>>
<<set $walkEvent = [
{ character: "Bus Driver", gender: "male", type:"speech", text:"Hold tight—this bus might hit a few bumps!" } ,
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Continue", type: "transfer", result: $destination }
]}
]>>
<<case 4>>
<<set $walkEvent = [
{ character: "Bus Driver", gender: "male", type:"speech", text:"We<punc>re nearly there, just enjoy the ride!" } ,
{ character: "Narrator", gender: "na", type: "narrative", text: "You step onto the crowded bus, the aroma of sweat and perfume filling your nostrils. As you find a spot to stand, you feel a hand brushing against your thigh." },
{ character: "Narrator", gender: "na", type: "choice",
text: "Do you...",
choices: [
{ text: "Slap it away", result:[
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
]
},
{ text: "Let it continue", result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "You decide to let it continue. The hand lingers, tracing the length of your thigh. You feel a shiver run down your spine as the hand moves up, brushing against your ass." },
{ character: "Narrator", gender: "na", type: "narrative", text: "The bus lurches, pushing you back into the stranger. You can feel his hardness pressing against you. His hand moves to your breast, squeezing it firmly." },
{ character: "Stranger", gender: "male", type: "speech", text: "You like that, don<punc>t you?" },
{ character: "Narrator", gender: "na", type: "narrative", text: "He continues to grope you, his breath ragged in your ear. After a few more stops, he hands you a crumpled note." },
{ character: "Stranger", gender: "male", type: "speech", text: "Here, for your cooperation. +$50" },
{ character: "Narrator", gender: "na", type: "narrative", text: "You look down at the money, then back at the stranger. He winks at you before getting off at the next stop." },
{ character: "Narrator", gender: "na", type: "choice", text: "Where do you get off??", choices: [
{ text: "Central District", type: "transfer", result: "Central District" },
{ text: "UpperDistrict", type: "transfer", result: "Upper District" },
{ text: "Sun Spire Beach", type: "transfer", result: "Beach" }
]}
]}
]
}
]>>
<</switch>>
<<set $busEntry = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You step onto the bus. The driver looks at you, waiting for your fare." },
{ character: "Narrator", gender: "na", type: "choice", text: "Do you pay the fare?", choices: [
{ text: "Pay $5 and take a seat.", statChanges: { money:-5 }, statRequirement: { stat: "money", threshold: 5 }, result: $busEvent },
{ text: "Step back and leave.", type: "transfer", result: $previousPassage }
]}
]>>
<div id="buschat-container"></div>
<<script>>
$(document).ready(function() {
$("#buschat-container").html(window.renderConversation(State.variables.walkEvent));
});
<</script>>
<<run $("#chat-container").append(window.renderConversation($busChoice))>>
::HomeDate
<<set $hasTV = $hasTV or true>>
<<set $hasKitchen = $hasKitchen or true>>
<<set $hasMusicPlayer = $hasMusicPlayer or true>>
<<set $charisma = $charisma or 5>>
<<set $confidence = $confidence or 5>>
<<set $dateMood = "neutral">>
<<set $conversation = [
{ character: "Alex", gender: "male", type: "choice", text: "So, what do you feel like doing tonight?",
choices: [
<<if $hasTV>>
{ text: "Watch a movie", type: "conversation", result: [
{ character: "Alex", gender: "male", type: "speech", text: "A movie night? Sounds perfect. I hope you have something good lined up!" },
{ type: "transition", passage: "MovieNight" }
] }
<<endif>>,
<<if $hasKitchen>>
{ text: "Cook a meal together", type: "conversation", result: [
{ character: "Alex", gender: "male", type: "speech", text: "Cooking together? That could be fun! Hopefully, I don’t mess up too much." },
{ type: "transition", passage: "CookingDate" }
] }
<<endif>>,
<<if $hasMusicPlayer>>
{ text: "Dance to some music", type: "conversation", result: [
{ character: "Alex", gender: "male", type: "speech", text: "Dancing? I like your style! Let’s put on something with a good beat." },
{ type: "transition", passage: "DanceDate" }
] }
<<endif>>
]
}
]>>
<<set $conversation = [
{ character: "Alex", gender: "male", type: "choice", text: "So, what do you think of our little date so far?",
choices: [
{ text: "It's amazing—I feel really connected!", type: "conversation", result: [
{ character: "Alex", gender: "male", type: "speech", text: "I'm glad you feel that way. Your charm really shines tonight." }
], statChanges: { charisma: 1 } },
{ text: "It's okay, but I think it could be better.", type: "conversation", result: [
{ character: "Alex", gender: "male", type: "speech", text: "Really? Maybe we should try something new—I'm all for a little adventure." }
], statChanges: { confidence: 1 } },
{ text: "Honestly, I'm not sure this is my scene.", type: "conversation", result: [
{ character: "Alex", gender: "male", type: "speech", text: "I understand. We can always change the plan if you'd rather do something different." }
], statChanges: { confidence: -1 } }
]
}
]>>
<div id="chat-container"></div>
<<run $("#chat-container").html(window.renderConversation(State.variables.conversation))>>
<div id="doccollect"></div>
<<set $sizeword = ["big","huge"]>>
<<set $runchance = random(1,35) + $fitness>>
<<set $ran = $ran or 0>>
<<set $Mcum = $Mcum or 0>>
<<set $owenextweek = $owenextweek or 0>>
<<set $owedamount = $owenextweek+500>>
<<if $M===0>>
<<set $Mgreeting= "My name is M. I believe you owe a pimp named Rich Rich some money.">>
<<else>>
<<set $Mgreeting = "Hey $firstname , you know the drill at this point.">>
<</if>>
<<if $runchance < 50 or $ran>=3 >>
<<set $death =[
{ character: "kofi", gender: "mdale", type: "narrative", text: "You try to get away but M stabs you through your heart ." },
{ character: "M", gender: "trans", type: "speech", text: "Oh and you were so hot. We couldve made a plan but you had to run huh?" },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Game Over", result: "Loading Page", type:"transfer"},
]}
]>>
<<else>>
<<set $death =[
{ character: "kofi", gender: "mdale", type: "narrative", text: "M tries to catch you but your fitness aids you... This time" },
{ character: "M", gender: "trans", type: "speech", text: "I<punc>ll catch you eventually" },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Escape", statChanges: { ran:1 }, result: "Central District", type:"transfer"},
]}
]>>
<</if>>
<<set $afterdocpay = [
{ character: "M", gender: "trans", type: "speech", text: "OK this looks about right. Check you later $firstname!" },
{character: "Narrator", gender: "na", type: "choice", text: "do you approach her?",
choices: [
{text:"Leave", type:"transfer" , result:"Apartment", statChanges:{docCD:7}},
{ text: "Dominant", result: [
{ character: "kofi", gender: "mdale", type: "narrative", text: "You take charge and grab her hand as she turns away, leading her to your room, pushing her onto your bed ." },
{ character: "MCs", gender: "female", type: "speech", text: "Strip..." },
{ character: "kofi", gender: "mdale", type: "narrative", text: "M undresses and you proceed to aggresively stroke her cock. Moments later, you roughly suck her girl dick" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>Oh Fuck!</animate> <animate>Thats it , suck it like you mean it!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj1.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura has all but dissapeared and you<punc>re left with a horny beast. You stop sucking an start aggresively stroking her penis" },
{ character: "MCs", gender: "female", type: "speech", text: "<animate>Cum for me you horny bitch!</animate>" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>I<punc>m cumming!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj2.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura returns as she cleans up and handles her weapon once more." },
{ character: "M", gender: "trans", type: "speech", text: "Listen $firstname , just pay off A pimp...Richy so that we dont have to keep meeting like this. Heres $500 for the fuck" },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Leave", result: "Bedroom", statChanges: { docCD:7, money:500, Mcum:1 }, type:"transfer"},
]}
], statChanges: { M: 2 },statRequirements: [{ stat: "deviancy", threshold: 35 },{ stat: "energy", threshold: 15 }]},
{ text: "Submissive", result: [
{ character: "kofi", gender: "mdale", type: "narrative", text: "You shyly hold her hand while looking into her eyes. You get on your knees. M removes her uniform." },
{ character: "MCs", gender: "female", type: "speech", text: "Please be gentle..." },
{ character: "kofi", gender: "mdale", type: "narrative", text: "M undresses and proceeds to aggresively shove her cock down your throat. Moments later, her girl dick is balls deep in your mouth" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>Oh Fuck!</animate> <animate>Thats it , suck it like you mean it!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj1-sub.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura intensifies as shes bucking her hips like a dog in heat" },
{ character: "MCs", gender: "female", type: "speech", text: "<animate>Hmmm! Hmm!</animate>" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>I<punc>m cumming!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj2-sub.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura calms as she cleans up and handles her weapon once more." },
{ character: "M", gender: "trans", type: "speech", text: "Listen $firstname , Finish up with Richy. A sweet little thing like you should avoid men like him." },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Leave", result: "Bedroom", statChanges: { docCD:7 , Mcum:1}, type:"transfer"},
]}
], statChanges: { M: 1 },statRequirements:[{ stat: "deviancy", threshold: 30 }]},
]}
]>>
<<if $Mcum >=3>>
<<set $seduceM = [
{ character: "MCs", gender: "female", type: "speech", text: "Well I don<punc>t have it right now. But maybe we could make a plan" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "You beam a smile at her while accentuating your figure and "+$sizeword[$usnum-1]+" boobs. M smiles and inches closer too you, dropping her weapon." },
{ character: "M", gender: "trans", type: "speech", text: "At this point , I feel like your get out of jail free card has expired. Pay the money $firstname. I<punc>d hate to kill you." },
{ character: "kofi", gender: "mdale", type: "narrative", text: "The atmosphere changes, YOUR LIFE IS IN DANGER!" },
{character: "Narrator", gender: "na", type: "choice", text: "What do you do? 💀",
choices: [
{ text: "Pay the $"+$owedamount, result: $afterdocpay, statChanges: {M: 1, money:-$owedamount, doc:-$owedamount, Mcum:-3 }, statRequirements: { stat: "money", threshold: $owedamount }},
{ text: "Run "+$fiti, result: $death},
]}
]>>
<<else>>
<<set $seduceM =[
{ character: "MCs", gender: "female", type: "speech", text: "Well I don<punc>t have it right now. But maybe we could make a plan" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "You beam a smile at her while accentuating your figure and "+$sizeword[$usnum-1]+" boobs. M smiles and inches closer too you, dropping her weapon." },
{ character: "M", gender: "trans", type: "speech", text: "Listen you<punc>re pretty and I need to blow off some steam. Suck me off and we<punc>ll make a plan after." },
{character: "Narrator", gender: "na", type: "choice", text: "How do you approach her",
choices: [
{ text: "Dominant", result: [
{ character: "kofi", gender: "mdale", type: "narrative", text: "You take charge and lead her to your room, pushing her onto your bed ." },
{ character: "MCs", gender: "female", type: "speech", text: "Strip..." },
{ character: "kofi", gender: "mdale", type: "narrative", text: "M undresses and you proceed to aggresively stroke her cock. Moments later, you roughly suck her girl dick" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>Oh Fuck!</animate> <animate>Thats it , suck it like you mean it!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj1.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura has all but dissapeared and you<punc>re left with a horny beast. You stop sucking an start aggresively stroking her penis" },
{ character: "MCs", gender: "female", type: "speech", text: "<animate>Cum for me you horny bitch!</animate>" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>I<punc>m cumming!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj2.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura returns as she cleans up and handles her weapon once more." },
{ character: "M", gender: "trans", type: "speech", text: "Listen $firstname , I<punc>ll have a chat with A pimp named Rich Rich and tide him over with $500. That being said , if you don<punc>t have $1500 next week, it<punc>s game over." },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Leave", result: "Bedroom", statChanges: { doc:-500 ,docCD:7, Mcum:1 }, type:"transfer"},
]}
], statChanges: { M: 2 },statRequirements: [{ stat: "deviancy", threshold: 35 },{ stat: "energy", threshold: 15 }]},
{ text: "Submissive", result: [
{ character: "kofi", gender: "mdale", type: "narrative", text: "You get on your knees. M removes her uniform." },
{ character: "MCs", gender: "female", type: "speech", text: "Please be gentle..." },
{ character: "kofi", gender: "mdale", type: "narrative", text: "M undresses and proceeds to aggresively shove her cock down your throat. Moments later, her girl dick is balls deep in your mouth" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>Oh Fuck!</animate> <animate>Thats it , suck it like you mean it!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj1-sub.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura intensifies as shes bucking her hips like a dog in heat" },
{ character: "MCs", gender: "female", type: "speech", text: "<animate>Hmmm! Hmm!</animate>" },
{ character: "M", gender: "trans", type: "speech", text: "<animate>I<punc>m cumming!</animate>" },
{ character: "ss", gender: "mae", type: "video", text: "img/events/M-MC-bj2-sub.webm" },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her murderous aura calms as she cleans up and handles her weapon once more." },
{ character: "M", gender: "trans", type: "speech", text: "Listen $firstname , I<punc>ll have a chat with A pimp named Rich Rich and tide him over. That being said , if you don<punc>t have $2000 next week, it<punc>s game over." },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Leave", result: "Bedroom", statChanges: { docCD:7,owenextweek:500, Mcum:1 }, type:"transfer"},
]}
], statChanges: { M: 1 },statRequirement: { stat: "deviancy", threshold: 30 }},
]}
]>>
<</if>>
<<set $doccollect =[
{ character: "kofi", gender: "mdale", type: "narrative", text: "A tall woman dressed in a red nurses costume stands infront of you. Her feminine curves are interrupted by what looks to be a her penis bulging against the fabric of her uniform" },
{ character: "ss", gender: "mae", type: "image", text: "img/characters/M-full.jpg" },
{ character: "M", gender: "trans", type: "speech", text: $Mgreeting },
{ character: "kofi", gender: "mdale", type: "narrative", text: "Her cold tone is overshadowed by her grasp of what looks to be some sort of rusty sickle." },
{ character: "MC", gender: "female", type: "speech", text: "Umm I forgot to find him let me...." },
{ character: "M", gender: "trans", type: "speech", text: "I believe you owe him $"+$owedamount+" this week." },
{character: "Narrator", gender: "na", type: "choice", text: "What do you do? 💀",
choices: [
{ text: "Seduce "+$devi+"35"+" ⚡15", result: $seduceM, statChanges: { M: 1, energy:15 },statRequirements: [{ stat: "deviancy", threshold: 35 },{ stat: "energy", threshold: 15 }]},
{ text: "Pay the $"+$owedamount, result: $afterdocpay, statChanges: {M: 1, money:-$owedamount, doc:-$owedamount }, statRequirements: { stat: "money", threshold: $owedamount }},
{ text: "Run "+$fiti, result: $death},
]}
]>>
<<script>>
$(document).ready(function() {
$("#doccollect").html(window.renderConversation(State.variables.doccollect))
});
<</script>><<nobr>>
<p>The doctors office is characterised by a lone patients chair in the corner and medical certificates hanging on the wall. All attributed to a Dr Richard Dickems</p>
<<do>>
<<set $doc =$doc or 0>>
<<if $doc >0>>
<<set $debtlabel = "Pay debt">>
<<set $docCD = $docCD or 7>>
<<set $DoctorSexCD= $DoctorSexCD or 1>>
<<else>>
<<set $debtlabel = "Hidden">>
<</if>>
<</do>>
<<set $enddoc1 = [
{ character: "Richard", gender: "male", type: "speech", text: "Alright $firstname just take a whiff of this stuff and let me handle the rest." },
{ character: "Richard", gender: "male", type: "speech", text: "Olga bring the mallet!" },
{ character: "MC", gender: "female", type: "speech", text: "Wha, nono n..." },
{ character: "Kyle", gender: "male", type: "image", text: "img/events/surgery.jpg" },
{ character: "Richard", gender: "male", type: "speech", text: "Hehe, gets them every time" },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Sleep" ,type:"transfer",result: "surgeryend"},
]
}
]>>
<<if $DoctorSexCD === 1 >>
<<set $docsexprop ="I tell you what , I<punc>ll give you an extra day for the debts. If you put that mouth of yours to use. what do you say? ">>
<<else>>
<<set $docsexprop ="Im still drained from the last time baby, come back in "+$DoctorSexCD*-1+"days.">>
<</if>>
<<set $paydocdebt = [
{ character: "Richard", gender: "male", type: "speech", text: "Good work, Bitch. I see you puttin them titties to good use" },
{ character: "MC", gender: "female", type: "speech", text: "Thanks, a pimp named Rich Rich." },
{ character: "Richard", gender: "male", type: "speech", text: $docsexprop },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Leave", type:"transfer", result: "Hospital"},
{ text: "Blow him", statChanges: { docCD: 1, DoctorSexCD: -5, energy:25 },statRequirement: { stat: "DoctorSexCD", threshold: 0 }, result: [
{character:"MC" ,gender:"female",type:"speech", text:"Yes, that sounds fair"},
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "You kneel infront of him" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "He unzips his pants, freeing his already stiff member" },
{character:"MCs" ,gender:"female",type:"speech", text:"Ohh its so big"},
{character:"Richard" ,gender:"female",type:"speech", text:"Shut up bitch, suck this dick"},
{character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "your tongue <animate>flicks</animate> against Richard<punc>s tip, tasting the suprisingly sweet precum <animate>pulsing</animate> out of his cock"},
{character:"Richard" ,gender:"male",type:"speech", text:"Yeah, it taste sweet dont it. <animate>fuck!</animate> The benefits of being a gene surgeon."},
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/MC-Rich-bj1.webm" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "<animate>Sqwealch</animate>...<animate>Sqwealch</animate>...<animate>suck</animate>" },
{character:"Richard" ,gender:"female",type:"speech", text:"Im about to nut"},
{ character: "Jeffrey Thompson", gender: "mae", type: "video", text: "img/events/MC-Rich-bj2.webm" },
{ character: "Jeffrey Thompson", gender: "mae", type: "narrative", text: "His sweet cum fills your mouth" },
{character:"MCs" ,gender:"female",type:"speech", text:"Yummy! I feel more energetic"},
{character:"Richard" ,gender:"female",type:"speech", text:"Thats that pimp juice baby."},
{character:"Richard" ,gender:"female",type:"speech", text:"keep performing like that and I give ya more than just the necter babygirl"},
]},
]
}
]>>
<<set $leavedoc =[
{ character: "MC", gender: "female", type: "speech", text: "I still need time to think about this." },
{ character: "Richard", gender: "male", type: "speech", text: "Aight bitch, you know where to find me if ya wanna boss up." },
{ character: "Richard", gender: "male", type: "speech", text: "Ahem... Thanks for attending my practice, all consultation fees are not subject to refunds." },
{ character: "Richard", gender: "male", type: "speech", text: "Enjoy the rest of your day Miss $firstname." },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Leave", type:"transfer", result: "Hospital"},
]
}
]>>
<<set $paid3 =[
{ character: "MC", gender: "female", type: "speech", text: "Here you go $25000" },
{ character: "Richard", gender: "male", type: "speech", text: "Bitch where<punc>d you get 25 bands... ahem. I mean right this way maddam." },
{ character: "Richard", gender: "male", type: "speech", text: "Alright lets take a look at what were working with." },
{ character: "Richard", gender: "male", type: "speech", text: "As you can see the options are few at the moment but I must say they are potent." },
{ character: "Richard", gender: "male", type: "speech", text: "Please, peruse our catalog here and inform me of your decision." },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Boobs level 1 45 "+$devi , statChanges: { usnum:1 }, statRequirement: { stat: "deviancy", threshold: 45 },result: $enddoc1},
{ text: "Boobs level 2 45"+$devi ,statChanges: { usnum: 1 }, statRequirement: { stat: "usnum", threshold: 1 }, result: $enddoc1},
{ text: "Not Yet",statChanges: { goldentoken: 1 }, result: $leavedoc},
]
}
]>>
<<set $paid2 =[
{ character: "MC", gender: "female", type: "speech", text: "How far will one of these take me" },
{ character: "Richard", gender: "male", type: "speech", text: "This<pumc>ll take you all the way girl... ahem. I mean right this way maddam." },
{ character: "Richard", gender: "male", type: "speech", text: "Alright lets take a look at what were working with." },
{ character: "Richard", gender: "male", type: "speech", text: "As you can see the options are few at the moment but I must say they are potent." },
{ character: "Richard", gender: "male", type: "speech", text: "Please, peruse our catalog here and inform me of your decision." },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Boobs level 1 45 "+$devi , statChanges: { usnum:1 }, statRequirement: { stat: "deviancy", threshold: 45 },result: $enddoc1},
{ text: "Boobs level 2 45"+$devi ,statChanges: { usnum: 1 }, statRequirement: { stat: "usnum", threshold: 1 }, result: $enddoc1},
{ text: "Not Yet",statChanges: { goldentoken: 1 }, result: $leavedoc},
]
}
]>>
<<set $paid =[
{ character: "MC", gender: "female", type: "speech", text: "OK heres the money" },
{ character: "Richard", gender: "male", type: "speech", text: "Alright bitch lets take a look at what were working with." },
{ character: "Richard", gender: "male", type: "speech", text: "As you can see the options are few at the moment but I must say they are potent." },
{ character: "Richard", gender: "male", type: "speech", text: "Please, peruse our catalog here and inform me of your decision." },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Boobs level 1 45 "+$devi , statChanges: { usnum:1, doc:22500 }, statRequirement: { stat: "deviancy", threshold: 45 },result: $enddoc1},
{ text: "Boobs level 2 45"+$devi ,statChanges: { usnum: 1,doc:22500 }, statRequirement: { stat: "usnum", threshold: 1 }, result: $enddoc1},
{ text: "Not Yet",statChanges: { money: 2500 }, result: $leavedoc},
]
}
]>>
<<if $doc>0>>
<<set $surge =[
{ character: "Richard", gender: "male", type: "speech", text: "Bitch, you still owe me $"+$doc+"." },
{ character: "Richard", gender: "male", type: "speech", text: "use what you already got and make me some motherfuckin money!" },
]>>
<<elseif $doc<=0 and $usnum===0>>
<<set $surge= [
{ character: "Richard", gender: "male", type: "speech", text: "I conduct my procedures using a two step system. we can enhance your attributes to level 1 then max them out at level 2" },
{ character: "Richard", gender: "male", type: "speech", text: "I<punc>m not giving you large silicon boobs. Im changing your DNA. These is real titties. They can lactate if you train em to." },
{ character: "MC", gender: "female", type: "speech", text: "Um, ok. How much will this cost me" },
{ character: "Richard", gender: "male", type: "speech", text: "The going rate is $25 000 a procedure" },
{ character: "Narrator", gender: "na", type: "choice", text: "The numbers are shocking , how do you respond?",
choices: [
{ text: "Pay $25000" ,statChanges: { money:-25000 }, statRequirement: { stat: "money", threshold: 25000 },
result: $paid3
},
{ text: "I can<punc>t afford that",
result: [
{ character: "MC", gender: "female", type: "speech", text: "I can<punc>t affort that." },
{ character: "Richard", gender: "male", type: "speech", text: "That aint no issue, most bitches can<punc>t. Yet you still see bad bitches walking around everywhere ya go. Why do you think that is?" },
{ character: "MC", gender: "female", type: "speech", text: "Im not sure." },
{ character: "MC", gender: "female", type: "thought", text: "Why did his accent change" },
{ character: "Richard", gender: "male", type: "speech", text: "Its because baller ass playa$ such as myself like to invest in hos such as yaself." },
{ character: "Richard", gender: "male", type: "speech", text: "Listen bitch, I see yo potencial , so Imma slide you an offer you cannot refuse" },
{ character: "Richard", gender: "male", type: "speech", text: "I<punc>ll front the cash for your cosmetic enhancement but in return you gotta work for ya boy." },
{ character: "Richard", gender: "male", type: "speech", text: "All you gotta do is gimme a down payment of twenty five hunnid dollars" },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Pay the $2500",statChanges: { money:-2500 }, statRequirement: { stat: "money", threshold: 2500 }, result: $paid},
{ text: "Leave", result: $leavedoc},
{ text: "Present a Golden Token",statChanges: { goldentoken:-1 }, statRequirement: { stat: "goldentoken", threshold: 1 }, result: $paid2 }
]
}
]}]}]>>
<<else>>
<<set $surge= [
{ character: "Richard", gender: "male", type: "speech", text: "Miss, $firstname , welcome back" },
{ character: "Richard", gender: "male", type: "speech", text: "are you looking for more enhancements?" },
{ character: "Richard", gender: "male", type: "speech", text: "The going rate is $25 000 a procedure" },
{ character: "Narrator", gender: "na", type: "choice", text: "How do you respond?",
choices: [
{ text: "Pay $25000" ,statChanges: { money:-25000 }, statRequirement: { stat: "money", threshold: 25000 },
result: $paid3
},
{ text: "I can<punc>t afford that",
result: [
{ character: "MC", gender: "female", type: "speech", text: "I can<punc>t affort that." },
{ character: "Richard", gender: "male", type: "speech", text: "As you know, that aint no issue, most bitches can<punc>t. Yet you still see bad bitches walking around everywhere ya go." },
{ character: "Richard", gender: "male", type: "speech", text: "But baller ass playa$ such as myself like to invest in hos such as yaself." },
{ character: "Richard", gender: "male", type: "speech", text: "I<punc>ll front the cash for your second enhancement. Same arrangement before." },
{ character: "Richard", gender: "male", type: "speech", text: "All you gotta do is gimme a down payment of thirty five hunnid dollars" },
{ character: "Narrator", gender: "na", type: "choice", text: "", choices: [
{ text: "Pay the $3500",statChanges: { money:-3500 }, statRequirement: { stat: "money", threshold: 3500 }, result: $paid},
{ text: "Leave", result: $leavedoc},
{ text: "Present a Golden Token",statChanges: { goldentoken:-1 }, statRequirement: { stat: "goldentoken", threshold: 1 }, result: $paid2 }
]}
]
}]}
]>>
<</if>>
<<set $doctorConversation = [
{ character: "Olga", gender: "female", type: "speech", text: "Dr D we have a patient in to see you. This is $firstname, she seeks cosmetic enhacements." },
{ character: "Richard", gender: "male", type: "speech", text: "Thanks Olga , I<punc>ll take it from here." },
{ character: "Narrator", gender: "na", type: "narrative", text: "As nurse Olga exits the room, Doctor Dickems adjusts his coat and gestures towards the patients chair. You take a seat." },
{ character: "Richard", gender: "male", type: "speech", text: "Hi Miss $firstname , welcome to my practice. It says here youre interested in cosmetic surgery. How can I help you." },
{ character: "Richard", gender: "male", type: "choice", text: "what do you do?",
choices: [
{ text: "leave", type:"transfer",result:"Hospital"},
{ text: $debtlabel ,statChanges: { money:-850, doc:-1000, docCD:7 }, statRequirement: { stat: "doc", threshold: 1 },result: $paydocdebt},
{ text: "Introduce yourself",
result: [
{ character: "Narrator", gender: "na", type: "narrative", text: "The Strange doctor sports a diamond grill , fur coat and shades." },
{ character: "Kyle", gender: "male", type: "image", text: "img/characters/Richard-full.png" },
{ character: "MC", gender: "female", type: "thought", text: "Why is he dressed like that?" },
{ character: "MC", gender: "female", type: "speech", text: "Why are you dressed so weird." },
{ character: "Richard", gender: "male", type: "speech", text: "Oh these little trinckets? I grew up on the mean streets of Crompton." },
{ character: "MC", gender: "female", type: "speech", text: "Wow , you must have such a unique perspective on life" },
{ character: "Richard", gender: "male", type: "speech", text: "Yeah it was an experience , I have a portrait of my adoptive father, take a look." },
{ character: "Narrator", gender: "na", type: "narrative", text: "The doctor points towards a portrait on the wall. It displays a man dressed in a purple suit and gold chains." },
{ character: "Kyle", gender: "male", type: "image", text: "img/characters/Richard-dad.jpg" },
{ character: "MC", gender: "female", type: "speech", text: "His name was Slickback?." },
{ character: "Richard", gender: "male", type: "speech", text: "A pimp named Slickback. You gotta say the full thing." },
{ character: "MC", gender: "female", type: "speech", text: "Riiight..." },
]
},
{ text: "Surgeries",
result: $surge
}
]
}
]
>>
<div id="doctorchat-container"></div>
<<button "Ask him something else">><<redo>><</button>>
<</nobr>>
<<do>>
<<script>>
$(document).ready(function() {
$("#doctorchat-container").html(window.renderConversation(State.variables.doctorConversation));
});
window.scrollTo(0, 0);
<</script>>
<</do>>
<<nobr>>
<<if $doc>0>>
<<set $doccall="bitch">>
<<set $surgchoices = [
{ text: "Sit up", result: [
{ character: "Richard", gender: "msale", type: "narrative", text: "You adjust yourself on the bed. You notice Doctor D pull out a stack of papers" } ,
{ character: "Richard", gender: "male", type: "speech", text: "Listen bitch, the surgery was a success and you now have big tities." } ,
{ character: "Richard", gender: "male", type: "speech", text: "As I mentioned before , you now owe me $22500. The nanites in yo body also allow me to flip yo switch if you dont pay me in a timely fashion" } ,
{ character: "Richard", gender: "male", type: "speech", text: "I need AT MINIMUM $500 dollars a week. Do not pay me one week and not pay me the next on some lumpsome bulshit. I want my bitches to always be working and give me consistent income. unless you paying me off , keep the extra." } ,
{ character: "Richard", gender: "male", type: "speech", text: "Are we clear bitch? " } ,
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Ask about how to make money", result:[
{ character: "MC", gender: "female", type: "speech", text: "Could you give me advice on how to make the money back " },
{ character: "Richard", gender: "male", type: "speech", text: "Bitch , I gave you big titties go put them to work. Litterally at work or even suckin dick in bathrooms. " } ,
{ character: "Richard", gender: "male", type: "speech", text: "If you got a phone, you can download the fuck buddy app" } ,
{ character: "Richard", gender: "male", type: "speech", text: "Its up to you " }
]}
]
} ,
{ character: "Richard", gender: "male", type: "speech", text: "Another thang, you can address me as A Pimp Named Rich Rich " } ,
{ character: "MC", gender: "female", type: "speech", text: "Yes Rich Rich " } ,
{ character: "Richard", gender: "male", type: "speech", text: "Nah, its a PIMP Named Rich Rich! you gotta say the whole thing god dammit. " } ,
{ character: "MC", gender: "female", type: "speech", text: "Alright, A Pimp Named Rich Rich. I<punc>ll make the money back." } ,
{ character: "Richard", gender: "male", type: "speech", text: "Glad to have done business with ya, come find me to pay me back." } ,
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "Go home", type:"transfer", result: "Apartment"}
]
}
]
}
]>>
<<else>>
<<set $doccall = "Maam">>
<<set $surgchoices = [
{ text: "Go home", type:"transfer", result: "Apartment"}
]>>
<</if>>
<<set $aftersurgeryconversation = [
{ character: "Richard", gender: "msale", type: "narrative", text: "Your vision clears up as you wake from your extended sedation" } ,
{ character: "Richard", gender: "male", type: "speech", text: "Hi there , the surgery was a complete success and your body is healing at an unprecedented rate thanks to the nanites I injected." } ,
{ character: "Richard", gender: "male", type: "speech", text: "I think you<punc>re healthy enough to go home " } ,
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: $surgchoices
}]>>
<!-- Render conversation -->
<div id="aftersurgerychat-container"></div>
<<do>>
<<script>>
$(document).ready(function() {
$("#aftersurgerychat-container").html(window.renderConversation(State.variables.aftersurgeryconversation));
});
<</script>>
<</do>>
<</nobr>>
<<script>>
$(document).ready(function() {
window.selectOutfit(State.variables.closet["Casual Clothing"][0])
});
<</script>>
<div id="malltoiletchat"></div>
<<set $gloryholenum = random(1,6)>>
<<set $gloryscenenum= random(1,5)>>
<<set $g1mbath = $g1mbath or 0>>
<<set $gloryhole = $gloryhole or 0>>
<<set $glory_mutiplier = $usnum+0.5>>
<<set $cashgh = random(120,140)*$glory_mutiplier>>
<<set $look_through_hole = [
{ character: "MC", gender: "n/a", type: "narrative", text: "You grab the cash. " },
{ character: "MC", gender: "n/a", type: "narrative", text: "A throbbing penis pushes through the hole in the wall." },
{ character: "MC", gender: "n/a", type: "narrative", text: "You reach out, wrapping your fingers around the shaft. It<punc>s warm, throbbing with anticipation. You lean in, flicking your tongue against the tip, tasting the precum that beads there." },
{ character: "stranger1", gender: "male", type: "speech", text: "<animate>moan</animate> " },
{ character: "MC", gender: "female", type: "video", text: "img/events/event-gloryhole-"+$gloryscenenum+".webm" },
{ character: "Narrator", gender: "na", type: "choice", text: "He cums and you earn $"+$cashgh+" dollars",
choices: [
{ text: "Leave", type:"transfer", result:"Mall Toilet"}
]
}
]>>
<<if $timeCounter===4>>
<<set $gloryhole1 =[
{ character: "MC", gender: "femaldde", type: "narrative", text: "As you sit down, she notices a pen on the floor, you decide to doodle grafitti next to the hole in the wall." },
{ character: "MC", gender: "femsdale", type: "narrative", text: "As you write a penis suddenly invades your mouth " },
{ character: "MC", gender: "female", type: "video", text: "img/events/mc-gloryhole-1.webm" },
{ character: "MC", gender: "female", type: "speech", text: "<animate>Oh my god</animate>" },
{ character: "Narrator", gender: "na", type: "choice", text: "What do you do?",
choices: [
{ text: "Grab the penis"+$devi+"35", statChanges: { deviancy:5, money:$cashgh , gloryhole:1, energy:-15 },statRequirements:[{ stat: "deviancy", threshold: 35 },{ stat: "energy", threshold: 15 }], result:
[
{ character: "MC", gender: "n/a", type: "narrative", text: "You reach out, wrapping your fingers around the shaft. It<punc>s warm, throbbing with anticipation. You lean in, flicking your tongue against the tip, tasting the precum that beads there." },
{ character: "stranger1", gender: "male", type: "speech", text: "<animate>moan</animate> " },
{ character: "MC", gender: "n/a", type: "narrative", text: "The cock jerks, a low moan echoing from the other side of the wall. Encouraged, you take it into your mouth, inch by inch, until it hits the back of your throat. You gag, pulling back slightly, then push forward again, establishing a rhythm." },
{ character: "MC", gender: "female", type: "video", text: "img/events/mc-gloryhole-2.webm" },
{ character: "stranger1", gender: "male", type: "speech", text: "<animate>heavy breathing</animate> <animate>quiet moans</animate> " },
{ character: "MC", gender: "n/a", type: "narrative", text: "You reach up, cupping the balls that hang heavy on the other side, feeling them tighten as the anonymous stranger nears his release." },
{ character: "Other", gender: "male", type: "narrative", text: "The cock throbs, pulses, and then hot cum fills your mouth, spilling over" },
{character: "MC", gender: "female", type: "video", text: "img/events/mc-gloryhole-3.webm" },
{ character: "stranger1", gender: "male", type: "speech", text: "<animate>heavy breathing</animate> Here you go baby! +$"+$cashgh },
{ character: "stranger1", gender: "male", type: "speech", text: "Come find me here late at night if you want to have a good time again." },
{ character: "Narrator", gender: "na", type: "choice", text: "Time to go.",
choices: [
{ text: "Leave", type:"transfer" , result:"Mall Toilet"}
]}
],
},
{ text: "Run" , type:"transfer", result:"Mall"}]}
]>>
<<elseif $gloryholenum>4>>
<<set $gloryhole1=[
{ character: "MC", gender: "aaale", type: "narrative", text: "You notice the hole in wall , Theres a wad of cash peeking through it." },
{ character: "MC", gender: "female", type: "speech", text: "<animate>Hmm</animate>" },
{ character: "Narrator", gender: "na", type: "choice", text: "What do you do?",
choices: [
{ text: "Look through the hole 35 "+$devi+" 10 ⚡", result: $look_through_hole, statChanges: { deviancy:1, money:$cashgh , energy:-10},statRequirements:[{ stat: "deviancy", threshold: 35 },{ stat: "energy", threshold: 10 }]}
,{ text: "Ignore it and leave" ,type:"transfer", result:"Mall Toilet"}
]
}
]>>
<<else>>
<<set $gloryhole1=[
{ character: "MC", gender: "femasdle", type: "narrative", text: "You notice the hole in wall , Unfortnately it seems quiet at the moment" },
{ character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "leave", type:"transfer", result:"Mall Toilet" }]}]>>
<</if>>
<<set $malltoilet =[
{ character: "Narrator", gender: "na", type: "choice", text: "The bathroom toilet is dull and unassuming",
choices: [
{ text: "Use the toilet", result: $gloryhole1, statChanges: { deviancy:2 }},
,{ text: "Leave", type:"transfer" , result:"Mall"}
]
}
]>>
<<set $candytoiletsexevent2=[
{ character: "Candys", gender: "trans", type: "speech", text: "Mmmm, daddy<punc>s cock is so big!" },
{ character: "Candys", gender: "trans", type: "speech", text: "Are you gonna give me a prize daddy?" },
{ character: "Candys", gender: "trans", type: "narrative", text: "She bobs her head back and forth, slurping and gagging on the cock, her hand massaging his balls" },
{ character: "MC", gender: "female", type: "video", text: "img/events/candy-toilet-bj2.webm" },
{ character: "MCs", gender: "female", type: "thought", text: "Wow, Candy<punc>s really going to town on that dick!" },
{ character: "stranger1", gender: "male", type: "speech", text: "Yesss! anything you want! The bag, the shoes. Absolutely anything!!" },
{ character: "Candys", gender: "trans", type: "speech", text: "I wanna taste your cum, daddy!" },
{ character: "stranger1", gender: "male", type: "speech", text: "<animate>oh fuck</animate>" },
{ character: "MC", gender: "female", type: "video", text: "img/events/candy-toilet-bj3.webm" },
{ character: "Candys", gender: "trans", type: "narrative", text: "The man showers Candy<punc>s face with his burning hot cum" },
{ character: "MCs", gender: "female", type: "thought", text: "i guess i could try to seduce guys at the mall" },
{ character: "Narrator", gender: "na", type: "choice", text: "Time to go.",
choices: [
{ text: "Leave", type:"transfer" , result:"Mall"}
]}
]>>
<<set $candytoiletsexevent = [
{ character: "Candy", gender: "trans", type: "speech", text: "I wanna see that big black cock!!" },
{ character: "Candy", gender: "trans", type: "narrative", text: "Candy pulls down the mans pants revealing his stiffening member, she lowers down to her knees as she starts sucking on the thick black cock that disappears into her mouth" },
{ character: "MC", gender: "female", type: "video", text: "img/events/candy-toilet-bj1.webm" },
{ character: "Narrator", gender: "na", type: "choice", text: "Do you watch the whole blowjob?",
choices: [
{ text: "Watch the whole blowjob", result: $candytoiletsexevent2, statChanges: { deviancy:3, candybath:-1 }},
,{ text: "Leave", type:"transfer" , result:"Mall"}
]}
]>>
<<if $candybath===1>>
<<redo>>
<<script>>
$(document).ready(function() {
window.advanceTime();
$("#malltoiletchat").html(window.renderConversation(State.variables.candytoiletsexevent));
});
<</script>>
<<else>>
<<redo>>
<<script>>
$(document).ready(function() {
window.advanceTime();
$("#malltoiletchat").html(window.renderConversation(State.variables.malltoilet ));
});
<</script>>
<</if>> <div id="randomSex"></div>
<<set $customerChoice = random(1,3)>>
<<set $sexScene = random(1,6)>>
<<set $sexAct = ["blowjob", "fuck" ,"boob job"]>>
<<set $sex_mutiplier = $usnum+0.5>>
<<set $cashas = random(100,130)*$sex_mutiplier>>
<<switch $customerChoice>>
<<case 1>>
<<set $eventsex = "bj">>
<<case 2>>
<<set $eventsex = "sex">>
<<case 3>>
<<set $eventsex = "tt">>
<</switch>>
<<set $scene1 = "img/events/scenes-doc/"+$bodyShape+"/"+$eventsex+"/"+$eventsex+"-"+$sexScene+".webm" >>
<<set $scene2 = "img/events/scenes-doc/"+$bodyShape+"/cum/cum-"+$sexScene+".webm" >>
<<set $RandomsexConversation = [
{ character: "MCs", gender: "male", type: "speech", text: "So, how do you want to do this baby?" },
{ character: "stranger1", gender: "male", type: "speech", text: "Well, how about a "+ $sexAct[$customerChoice-1]+" first." },
{ character: "stranger1", gender: "male", type: "speech", text: "Oh.. and the money?" },
{ character: "MCs", gender: "female", type: "speech", text: "After, you can pay me. Let's just enjoy this, okay?" },
{ character: "John", gender: "msale", type: "narrative", text: "He nods, his eyes scanning your body, taking in every curve. eventually he gets what he asked for. " },
{ character: "MCs", gender: "male", type: "video", text: $scene1 },
{ character: "stranger1", gender: "male", type: "speech", text: "Oh..<animate>OH SHIT!</animate>" },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "He cums!", result: [
{ character: "MCs", gender: "male", type: "video", text: $scene2 },
{ character: "stranger1", gender: "male", type: "speech", text: "Oh..honey that was awesome" },
{ character: "MCs", gender: "male", type: "speech", text: "Thankyou!" },
{ character: "stranger1", gender: "male", type: "speech", text: "Here you go , you deserve this $"+$cashas },
{character: "Narrator", gender: "na", type: "choice", text: "",
choices: [
{ text: "End ", type:"transfer", result:"Apartment", statChanges: { money: $cashas, energy:-15 }},
]}
]},
]}
]>>
<<script>>
$(document).ready(function() {
window.advanceTime();
$("#randomSex").html(window.renderConversation(State.variables.RandomsexConversation))
});
<</script>><<nobr>>
/* --- Milking Logic --- */
/* In StoryInit or similar */
<<set $milkingSkill = $milkingSkill || 1>> /* Buckets per session, starts at 1 */
<<set $milkingProgress = $milkingProgress || 0>> /* Counter towards next skill level */
<<set $milkCD = $milkCD || 0>> /* Cooldown timer, 0 means ready */
/* Player's milk inventory */
<<set $milkvid = random(1,5)>>
/* Define the cooldown conversation */
<<set $cowMilkingCooldownConvo = [
{ character: "Narrator", gender: "na", type: "narrative", text: "You attach the milk pump to yourself, but nothing seems to come out. You<punc>re not ready to be milked again just yet." },
{ character: "MC", gender: "na", type: "thought", text: "Moooo. (Give a girl a break!)" }
]>>
/* This variable will hold the conversation to be displayed */
<<set $currentCowConversation = []>>
<<if $milkCD gt 0>>
/* --- COOLDOWN ACTIVE --- */
<<set $currentCowConversation = $cowMilkingCooldownConvo>>
/* No variables change here, just display the cooldown message */
<<else>>
/* --- READY TO MILK --- */
<<set _yield = Math.min($milkingSkill, 12)>> /* Calculate yield based on skill, capped at 12 */
<<set $milkBuckets += _yield>> /* Add milk to inventory */
<<set $milkingProgress += 1>> /* Increment progress towards next skill level */
<<set _skilledUp = false>> /* Flag to check if skill increased this time */
<<if $milkingProgress >= 12>>
<<set $milkingProgress = 0>> /* Reset progress */
<<if $milkingSkill < 12>>
<<set $milkingSkill += 1>> /* Increase skill */
<<set _skilledUp = true>> /* Set skill up flag */
<</if>>
<</if>>
<<set $milkCD = 1>> /* Set cooldown (e.g., 1 day) - Adjust as needed */
/* --- Dynamically build the success conversation --- */
<<set _actionMessages = []>>
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "narrative", text: "You settle onto your couch, grab the pump, and begin the familiar, rhythmic work of milking your tits." })>>
/* Add message about the yield */
<<if _yield > 0>>
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "narrative", text: "You produce some milk. You manage to collect <animate>" + _yield + " bottle" + (_yield > 1 ? "s" : "") + "</animate> of fresh, warm breast milk!" })>>
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "video", text: "img/events/milking"+$milkvid+".webm" })>>
<<run _actionMessages.push({ character: "MCs", gender: "female", type: "speech", text: "Lets see? " + (_yield > 5 ? " Fantastic!" : "Seems right.") })>> /* More enthusiastic moo for higher yield */
<<else>>
/* This case shouldn't happen with skill starting at 1, but good practice */
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "narrative", text: "You try your best, but you don't seem to have much milk right now. You couldn't collect any." })>>
<<run _actionMessages.push({ character: "MCs", gender: "na", type: "speech", text: "Damn!" })>>
<</if>>
/* Add message about skill increase or max skill */
<<if _skilledUp>>
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "thought", text: "You feel a subtle shift in your boobs – more full, They ache with pressure. You<punc>re producing more milk!" })>>
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "narrative", text: "Your Milking Skill has increased to " + $milkingSkill + "! You can now potentially collect more milk per session." })>>
<<elseif $milkingSkill >= 12 and _yield == 12>>
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "narrative", text: "You're truly a master milker. You extract the maximum possible yield with ease." })>>
<</if>>
/* Add message about cooldown starting */
<<run _actionMessages.push({ character: "Narrator", gender: "na", type: "narrative", text: "Your high ends after the milking. You pack the pump and decide to rest for the day." })>>
/* Set the dynamically generated conversation */
<<set $currentCowConversation = _actionMessages>>
<</if>>
/* --- Display Area --- */
/* This assumes you have a container like the store example */
<div id="cow-interaction-container">
</div>
<</nobr>>
/* --- JavaScript to Render Conversation --- */
<<script>>
$(document).ready(function() {
/* Check if the conversation object and render function exist */
if (State.variables.currentCowConversation && typeof window.renderConversation === "function") {
/* Use your existing renderConversation function */
$("#cow-interaction-container").html(window.renderConversation(State.variables.currentCowConversation));
} else {
/* Fallback or error display */
let fallbackText = "";
if (State.variables.milkCD > 0) {
fallbackText = "You need to rest.";
} else {
fallbackText = "You successfully milked yourself. (Add details here if renderConversation fails)";
}
$("#cow-interaction-container").text(fallbackText + " (Error: Conversation display issue)");
console.error("Could not render cow conversation. Check $currentCowConversation and window.renderConversation.");
}
/* Optional: Clear the conversation variable after display if needed, */
/* or leave it to be overwritten on the next interaction. */
/* State.variables.currentCowConversation = []; */
});
<</script>>
/* Add other relevant links/buttons, like leaving the area */
<<button "Go do something else" "Apartment">>
<</button>><div id="patronarea"></div>
<<nobr>>
<<set $patronmeet = $patronmeet or 0>>
<<if $patronmeet ===0>>
<<set $patronmeet +=1>>
<<set $patrongodchat = [
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You find yourself in a dreamscape, the air thick with an otherworldly energy. A figure materializes before you, her physique a masterclass in divine proportion. She<punc>s the epitome of grace, her eyes sparkling with amusement."
},
{
"character": "",
"gender": "na",
"type": "image",
"text": "img/characters/goddess-full.jpg"
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Ah, you<punc>re awake. I am the Goddess of Patrons, and I<punc>ve been watching you, dear.\""
},
{
"character": "MC",
"gender": "na",
"type": "thought",
"text": "\"What does she mean, watching?\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Your life, my dear, is quite the spectacle. A comedy of errors, if you will. I must admit, I<punc>ve found it most entertaining.\""
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "\"My life? You<punc>ve been... watching me?\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Indeed. I must confess, your recent bout with that pesky illness had me in stitches. Stuck at home, <animate>for years</animate>, like a caged bird.\""
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "\"She<punc>s talking about Heinegen virus. How does she...?\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Yes, yes, I saw it all. The endless streaming, the monotonous diet of takeout, and... the shower. Oh, how you kept yourself <punc>occupied<punc>.\""
},
{
"character": "MCs",
"gender": "female",
"type": "speech",
"text": "\"You... you saw that?\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Every thrust, every moan. It was... enlightening. But enough about your... private moments. I<punc>ve granted you access to the terminal. If you consider yourself <animate>patron</animate> , it will grant you access to many boons. I do hope you<punc>ll provide me with more laughter in your adventures.\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "With a wicked wink, she vanishes, leaving you alone in the dreamscape, your cheeks still flushed from her revelation."
}
]>>
<<else>>
<<set $patrongodchat = [
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "You<punc>re back in the dreamscape, the air crackling with energy. The Goddess of Transformation appears, her eyes twinkling with mischief."
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Ah, back so soon? I must say, I didn<punc>t expect you to be quite this eager.\""
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "\"I... I was just curious. I wanted to see if the terminal was still available.\""
},
{
"character": "goddess",
"gender": "female",
"type": "laugh",
"text": "\"Curiosity, is it? Or perhaps it<punc>s the thrill of the unknown that has you so excited?\""
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "\"I... I don<punc>t know what you mean.\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Oh, come now, dear. You can<punc>t fool me. I<punc>ve seen the way you<punc>ve been exploring your desires, pushing your boundaries. It<punc>s quite... stimulating, really.\""
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "\"She knows. She knows everything.\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"But tell me, what brings you back here? Another itch to scratch, perhaps? Or are you finally ready to embrace your true nature?\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "She steps closer, her voice dropping to a sultry whisper. \"Remember, dear, I<punc>m always watching. Enjoy your... adventures.\""
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "\"Her words send a shiver down my spine. What does she mean, <punc>embrace my true nature<punc>? And why does her knowing feel so... thrilling?\""
},
{
"character": "Node 1",
"gender": "na",
"type": "choice",
"text": "Ask the goddess",
"choices": [
{
"text": "How to unlock nature",
"statRequirements": [],
"statChanges": {},
"result": [
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Ah, now we<punc>re getting to the heart of it. You wish to unlock your true nature, hmm?\""
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "\"Yes. If you know so much about me, surely you can tell me how.\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Oh, I can. But it<punc>s not as simple as snapping my fingers, dear. You see, unlocking your true nature requires you to confront your deepest desires, your darkest fears. It<punc>s a journey, one that you must take alone.\""
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "\"Confront my fears? That sounds... terrifying.\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Yes, it can be. But it<punc>s also liberating. And who knows? Perhaps along the way, you<punc>ll find that you enjoy the darkness.\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "She reaches out, her fingers brushing against your cheek. \"But don<punc>t worry, dear. I<punc>ll be here, watching. Guiding you, in my own way.\""
},
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "\"So, what do I do? How do I start?\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Start by being honest with yourself, dear. Look into the mirror, and ask yourself: What do I truly want? What do I truly fear? The answers will guide you.\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "With that, she vanishes, leaving you alone in the dreamscape, her words echoing in your mind."
}
]
},
{
"text": "Can you give me powers",
"statRequirements": [],
"statChanges": {},
"result": [
{
"character": "MC",
"gender": "female",
"type": "speech",
"text": "\"Can<punc>t you just... give me my powers? Make me strong, like you?\""
},
{
"character": "goddess",
"gender": "female",
"type": "laugh",
"text": "\"Oh, dear, if only it were that simple. You see, my powers are not so easily given. They must be earned.\""
},
{
"character": "MC",
"gender": "female",
"type": "pout",
"text": "\"But I want them now. I want to be strong.\""
},
{
"character": "goddess",
"gender": "female",
"type": "smile",
"text": "\"Patience, dear. Good things come to those who wait. But... I can give you something. A taste of what<punc>s to come.\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "She steps closer, her voice dropping to a husky whisper. \"Close your eyes,\" she commands."
},
{
"character": "MC",
"gender": "female",
"type": "comply",
"text": "\"Okay...\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"Imagine... yourself surrounded by wealth and coursing with power. Thick, veiny, and throbbing with desire.\""
},
{
"character": "MC",
"gender": "female",
"type": "gasp",
"text": "\"What? No, I can<punc>t... I won<punc>t...\""
},
{
"character": "goddess",
"gender": "female",
"type": "laugh",
"text": "\"Shh, dear. It<punc>s just a fantasy. For now. You use this thought to dominate those around you.\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "She leans in, her breath hot on your ear. \"But remember, dear. I can make it a reality. When the time is right.\""
},
{
"character": "MC",
"gender": "female",
"type": "thought",
"text": "\"Penis? That<punc>s... that<punc>s insane. But why does the thought of it make me feel so... aroused?\""
},
{
"character": "goddess",
"gender": "female",
"type": "speech",
"text": "\"For now, dear, enjoy the pleasure of the possibilities. And remember, I<punc>m always watching. Always guiding.\""
},
{
"character": "",
"gender": "na",
"type": "narrative",
"text": "With a wink, she vanishes, leaving you alone in the dreamscape, your mind racing with thoughts of what could be."
}
]
}
]
}
]>>
<</if>>
<</nobr>>
<<script>>
$(document).ready(function() {
window.scrollTo(0, 0);
$("#patronarea").html(window.renderConversation(State.variables.patrongodchat));
});
<</script>>
<<linkreplace "TERMINAL">>
<h3>TERMINAL</h3>
<<textbox "_input" "" autofocus>>
<<button "Submit">>
<<set _code = _input.toLowerCase().trim()>>
<<switch _code>>
<<case "unlockriches">>
<<set $money += 500>>
<<replace "#output">>Access granted. $500 transferred.<</replace>>
<<case "goldcode">>
<<set $goldentoken += 1>>
<<replace "#output">>Golden Token unlocked.<</replace>>
<<case "fitforce">>
<<set $fitness += 3>>
<<replace "#output">>You feel stronger. +3 Fitness.<</replace>>
<<case "deviantwave">>
<<set $deviancy += 2>>
<<replace "#output">>Deviancy increased by 2.<</replace>>
<<default>>
<<replace "#output">><<= either("Invalid code.", "Access denied.", "Try again.") >><</replace>>
<</switch>>
<<redo>>
<</button>>
<span id="output"></span>
<</linkreplace>>
<<button "Wake up" "Bedroom">><</button>>