@@.norm;
Worldbound!
@@
<div class="cheat-hint">Hey there, traveler!
Here you’ll step into the story of a guy who finds a wild, unexpected way to jump between countries.
Hey guys! Just a heads-up: This is a demo to test the vibes and mechanics, so the story/content is pretty short for now.
I really want the game to be smooth for everyone, so if you run into any bugs, please help me out and fill out this <a href="https://docs.google.com/forms/d/e/1FAIpQLScbCDCUsN8jNjYFbipXM6TRZYqTVIfFYtbPcD87zt-YPjg93A/viewform?usp=publish-editor" target="_blank">FORM</a> or just drop a comment.
Note: Mobile isn’t optimized yet, so it’ll probably be a bit glitchy on your phone. Best played on PC for now! 🖥️</div>
<div class="cheat-hint">If you like the game, support its development <a href="https://www.patreon.com/c/WorldboundTeam" target="_blank">Patreon!</a></div>
<<run $("html").toggleClass("norm1")>><<button [[I`m 18+|Im18]]>><</button>>
<<button [[I'm not 18+|I'm not 18+]]>><</button>>
<<pickup $backpack "small energy drink" 5>><<set $cheatcode = "?">>
<<set $achievements = {
achieve1: { name:"Start the Game", desc:"Start of the game? Not bad!", img:"ach/ach_1.png", rare:"common" },
achieve2: { name:"First Sex", desc:"Your first sex, and with such a beautiful girl!", img:"ach/ach_2.png", rare:"rare" },
achieve3: { name:"First Travel", desc:"What happened? I need to figure this out.", img:"ach/ach_3.png", rare:"legendary" },
achieve4: { name:"First Collection", desc:"I will remember this night for a long time.", img:"ach/ach_4.png", rare:"common" },
achieve5: { name:"Dreams", desc:"You’ve seen every dream. Nothing’s hidden from you now.", img:"ach/ach_5.png", rare:"rare" },
achieve6: { name:"DM Legend", desc:"You ran through every chat with the girls. Respect.", img:"ach/ach_6.png", rare:"rare" },
achieve7: { name:"Home Chef", desc:"All dishes cooked. No gaps left.", img:"ach/ach_7.png", rare:"common" },
achieve8: { name:"Chef Mode: God Tier", desc:"Fucking delicious. And ridiculously rare.", img:"ach/ach_8.png", rare:"legendary" },
achieve9: { name:"Clean Freak", desc:"Now your dick is the cleanest in this city.", img:"ach/ach_9.png", rare:"legendary" },
achieve10: { name:"No Days Off", desc:"100 Fitness. You kept showing up.", img:"ach/ach_10.png", rare:"common" }
}>>
<<set $patreon_buttons = false>>
<<set $brutal_timer=1800>>
<<newinv $backpack>>
<<consumable "health potion">>
<<set $hp to Math.clamp($hp + 20, 0, 100)>>
<<description>>\
<<include "health potion description">>\
<</consumable>>
<<consumable "small energy drink">>
<<set $rick.energy+=20>>
<<description>>\
<<include "small energy drink description">>\
<</consumable>>
<<set $rick = { <!-- рик, главный персонаж-->
id: "rick",
nom: "Rick",
img: "characters/rick.jpg",
exp: 0,
lvl: 0,
cor: 0,
fit: 0,
brut:0,
int:0,
money: 0,
energy: 100,
progress_city_1:0,
progress_city_2:0,
}>>
<<set $st = { <!-- рассказчик-->
id: "st",
nom: "Voice Within",
}>>
<<set $ali= { <!-- Alicia-->
id: "ali",
nom: "Alicia",
img: "characters/alicia.jpg",
rel:0,
cor:0,
}>>
<<set $aliDates = $aliDates or {
q1: { started:false, done:false },
q2: { started:false, done:false }
}>>
<<set $jason = { <!-- jason-->
id: "jason",
nom: "Jason",
img: "characters/jason.webp",
}>>
<<set $old = { <!-- Old man-->
id: "old",
nom: "Old man",
img: "characters/old.jpg",
}>>
<<set $cash = { <!-- Cashier-->
id: "cash",
nom: "Cashier",
img: "characters/cashier.jpg",
}>>
<<set $girl_b = { <!-- Girl Brazil-->
id: "girl_b",
nom: "Girl",
img: "characters/girl_b.jpg",
}>>
<<set $brun_b = { <!-- Girl brunette Brazil-->
id: "brun_b",
nom: "Brunette",
img: "characters/brun_b.png",
}>>
<<set $horny = { <!-- laptop girl 1-->
id: "horny",
nom: "Horny2002",
img: "characters/horny2002.png",
}>>
<<set $luna = { <!-- laptop girl 2-->
id: "luna",
nom: "Mia_Sunset",
img: "characters/luna23.png",
}>>
<<set $mia_sunset = { <!-- laptop girl 3-->
id: "mia_sunset",
nom: "Mia_Sunset",
img: "characters/mia_sunset.png",
}>>
<<set $jade_99 = { <!-- laptop girl 4-->
id: "jade_99",
nom: "Jade_99",
img: "characters/jade_99.png",
}>>
<<set $riley_c = { <!-- laptop girl 5-->
id: "riley_c",
nom: "Riley_C",
img: "characters/riley_c.png",
}>>
<<set $violet_haze = { <!-- laptop girl 6-->
id: "violet_haze",
nom: "Violet_haze",
img: "characters/violet_haze.png",
}>>
<<set $sexysam = { <!-- laptop girl 7-->
id: "sexysam",
nom: "SexySam",
img: "characters/sexysam.png",
}>>
<<set $hornyhanna = { <!-- laptop girl 8-->
id: "hornyhanna",
nom: "HornyHanna",
img: "characters/hornyhanna.png",
}>>
<<set $wetgirl88 = { <!-- laptop girl 9-->
id: "wetgirl88",
nom: "WetGirl88",
img: "characters/wetgirl88.png",
}>>
<<set $freakyfiona = { <!-- laptop girl 10-->
id: "freakyfiona",
nom: "FreakyFiona",
img: "characters/freakyfiona.png",
}>>
<<set $naughtynina = { <!-- laptop girl 11-->
id: "naughtynina",
nom: "NaughtyNina",
img: "characters/naughtynina.png",
}>>
<<set $manager = { <!-- manager-->
id: "manager",
nom: "Manager",
img: "characters/manager_work.jpg",
}>>
<<set $girl_gym = { <!-- manager-->
id: "girl_gym",
nom: "Girl",
img: "characters/girl_gym.jpg",
}>>
<<set $london_city_girl = { <!-- manager-->
id: "london_city_girl",
nom: "Girl",
img: "characters/london_city_girl.png",
}>>
<<set $girl_library = { <!-- manager-->
id: "girl_library",
nom: "Girl",
img: "characters/girl_library.png",
}>>
<<set $housekeeping_girl = { <!-- manager-->
id: "housekeeping_girl",
nom: "Maid",
img: "characters/housekeeping_girl.png",
}>>
<<set $maid_girl = { <!-- manager-->
id: "maid_girl",
nom: "Maid",
img: "characters/maid_girl.png",
}>>
<<set $guest_hotel = { <!-- manager-->
id: "guest_hotel",
nom: "Guest",
img: "characters/guest_hotel.png",
}>>
<<set $wedding_girl = { <!-- manager-->
id: "wedding_girl",
nom: "Wedding Girl",
img: "characters/wedding_girl.png",
}>>
<<set setup.levels = [10, 15, 25, 40, 60, 85, 115, 150, 190, 235, 285, 340, 400, 465, 535, 610, 690, 775, 865, 960, 99999, Infinity]>>
<<set $exp_needed = { <!-- опыта для левелапа -->
0: 10,
1: 15,
2: 25,
3: 40,
4: 60,
5: 85,
6: 115,
7: 150,
8: 190,
9: 235,
10: 285,
11: 340,
12: 400,
13: 465,
14: 535,
15: 610,
16: 690,
17: 775,
18: 865,
19: 960,
20: 99999,
}>>
<<set $collections = {
alicia: {
name: "Alicia",
avatar: "characters/alicia.jpg",
items: {
a_photo_1: { name:"First Sex", desc:"First sex with Alicia. A perfect memory.", img:"col/alicia/photo_1.jpg", type:"photos", rare:"common" },
a_photo_2: { name:"After Hours", desc:"You tell yourself it’s just a photo. Then your brain fills in the rest… and you don’t fight it.", img:"col/alicia/photo_2.jpg", type:"photos", rare:"common" },
a_photo_3: { name:"Private Moment", desc:"One look and you’re gone. Same fantasy. Same girl. Same problem.", img:"col/alicia/photo_3.jpg", type:"photos", rare:"common" },
a_photo_4: { name:"Her Look", desc:"That face. That attitude. You keep replaying it like it’s a scene you own.", img:"col/alicia/photo_4.jpg", type:"photos", rare:"common" },
a_photo_5: { name:"Dangerous Favorite", desc:"You open it “just to check.” Ten seconds later you’re imagining what she’d do if you were there.", img:"col/alicia/photo_5.jpg", type:"photos", rare:"common" },
a_photo_6: { name:"Heat Trigger", desc:"It hits fast. A small detail, a vibe, a glance then your thoughts go straight to her.", img:"col/alicia/photo_6.jpg", type:"photos", rare:"common" },
a_photo_7: { name:"Saved", desc:"You keep it because it’s proof. She’s real. And she can get under your skin.", img:"col/alicia/photo_7.jpg", type:"photos", rare:"common" }
}
}
/*elaine: {
name: "Elaine",
avatar: "img/chars/elaine.png",
items: {
e_photo_1: { name:"Mirror Shot", desc:"She knew exactly what she was doing.", img:"col/elaine/photo_1.jpg", type:"photos", rare:"rare" },
e_vid_1: { name:"Tequila Dare", desc:"You hit record at the worst time.", img:"col/elaine/video_1.jpg", type:"videos", rare:"common" }
}
}*/
}>>>
<<set $collectionsUnlocked = {}>>
<<set $quests = { <!-- Quests-->
quest_1:false
}>>
<<set $ab1 to true>>
<<set $ab2 to $ab2 or false>>
<<set $ab3 to $ab3 or false>>
<<set $ab4 to $ab4 or false>>
<<set $ab5 to $ab5 or false>>
<<set $ab6 to $ab6 or false>>
<<set $ab7 to $ab7 or false>>
<<set $ab8 to $ab8 or false>>
<<set $ab9 to $ab9 or false>>
<<set $ab10 to $ab10 or false>>
<<set $aliVisitsToday = $aliVisitsToday or 0>>
<<set $aliVisitLimitToday = $aliVisitLimitToday or random(2,3)>>
<<set $aliLastVisitAngry = $aliLastVisitAngry or false>>
<<set $aliGiftMsg = $aliGiftMsg or "">>
<<set $aliGiftScene = $aliGiftScene or "">>
/* --- Inventory for gifts given to Alicia --- */
<<newinv $aliBackpack>>
<<script>>
/* =========================================================
ITEM META REGISTRY (NO <<item>> / NO tags)
You ONLY add items via: <<pickup $backpack "id" n>>
========================================================= */
setup.itemsMeta = setup.itemsMeta || {};
setup.itemsMeta.get = function (id) {
return setup.itemsMeta[id] || { id, name:id, canGive:false, kind:"misc", price:0 };
};
setup.itemsMeta.set = function (id, meta) {
setup.itemsMeta[id] = Object.assign({ id, name:id, canGive:false, kind:"misc", price:0 }, meta || {});
};
/* ====== GIFTS (Alicia) ====== */
/* KINDS:
- luxury (high quality gifts)
- romantic (sweet gifts)
- mid (ok gifts / accessories)
- lewd (depends on cor)
*/
setup.itemsMeta.set("silver_necklace", {
name: "Silver Necklace", canGive: true, kind: "mid", price: 120,
giftLike: `<<rick>>You want to do something nice for Alicia. You pull out the silver necklace and offer it to her.<</rick>>
<<ali>>She smiles and takes it. She turns it over in her hands. "That's actually sweet." She puts it on right there.<</ali>>`,
giftHate: `<<rick>>You hand Alicia the silver necklace, thinking she'll love it.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? Silver?" She pushes it back. "Not my style."<</ali>>`
});
setup.itemsMeta.set("expensive_perfume", {
name: "Expensive Perfume", canGive: true, kind: "luxury", price: 220,
giftLike: `<<rick>>You figured Alicia might like something fancy. You hand her the bottle of expensive perfume.<</rick>>
<<ali>>She takes it, gives it a spray on her wrist, and sniffs. She tries to act chill but you see the smile. She's happy as hell.<</ali>>`,
giftHate: `<<rick>>You pull out the expensive perfume and offer it to Alicia.<</rick>>
<<ali>>She looks at the bottle, then at you. Her face hardens. "Don't bring me that shit. You think I wear cheap perfume?" She walks away.<</ali>>`
});
setup.itemsMeta.set("gold_bracelet", {
name: "Gold Bracelet", canGive: true, kind: "luxury", price: 260,
giftLike: `<<rick>>You show Alicia the gold bracelet you found. Delicate and pretty.<</rick>>
<<ali>>She holds out her wrist for you to put it on. She examines it in the light. "Okay… that's hot." She wears it the rest of the night.<</ali>>`,
giftHate: `<<rick>>You present the gold bracelet to Alicia with a smile.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? This looks like something my grandma would wear." She hands it back.<</ali>>`
});
setup.itemsMeta.set("diamond_earring", {
name: "Diamond-Looking Earring", canGive: true, kind: "mid", price: 90,
giftLike: `<<rick>>You pull out the little earring and offer it to Alicia.<</rick>>
<<ali>>She raises an eyebrow. Takes it. Turns it in the light. "Not bad." She slips it into her pocket. "Thanks."<</ali>>`,
giftHate: `<<rick>>You hold up the diamond-looking earring for Alicia to see.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? One earring? What am I supposed to do with one?" She walks off shaking her head.<</ali>>`
});
setup.itemsMeta.set("silk_scarf", {
name: "Silk Scarf", canGive: true, kind: "luxury", price: 160,
giftLike: `<<rick>>You hand Alicia the silk scarf. Expensive brand. Soft as hell.<</rick>>
<<ali>>She runs it through her fingers. Then wraps it around her neck. She smirks. "Okay… that's hot." Definitely a win.<</ali>>`,
giftHate: `<<rick>>You offer Alicia the silk scarf, thinking she'll love the feel of it.<</rick>>
<<ali>>She looks at it, then at you. "Don't bring me that shit." She pushes it away. "Not my thing."<</ali>>`
});
setup.itemsMeta.set("restaurant_giftcard_50", {
name: "$50 Restaurant Gift Card", canGive: true, kind: "mid", price: 50,
giftLike: `<<rick>>You give Alicia the gift card. Fifty bucks to a nice place downtown.<</rick>>
<<ali>>She looks at it. Then looks at you. "You taking me, or just handing me plastic?" She's teasing. She takes it. Happy.<</ali>>`,
giftHate: `<<rick>>You hand Alicia the restaurant gift card with a hopeful smile.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? A gift card?" She drops it on the table. "That's the laziest shit ever."<</ali>>`
});
setup.itemsMeta.set("expensive_chocolates_box", {
name: "Box of Expensive Chocolates", canGive: true, kind: "romantic", price: 45,
giftLike: `<<rick>>You bring out the box of chocolates. Expensive ones. You offer them to Alicia.<</rick>>
<<ali>>She opens them, picks one, eats it. Her eyes close for a second. She softens. "That's actually sweet." She pulls you closer.<</ali>>`,
giftHate: `<<rick>>You present the chocolates to Alicia, hoping for a good reaction.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? You know I'm watching my weight." She pushes them back. "Eat them yourself."<</ali>>`
});
setup.itemsMeta.set("vanilla_candle", {
name: "Scented Candle (Vanilla)", canGive: true, kind: "romantic", price: 20,
giftLike: `<<rick>>You light the vanilla candle and bring it to Alicia. The smell fills the room.<</rick>>
<<ali>>She inhales deep. Her whole face relaxes. She tries to act chill but she's happy as hell. "Okay. This stays."<</ali>>`,
giftHate: `<<rick>>You hand Alicia the vanilla candle, thinking it's romantic.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? A candle? What am I, sixty?" She puts it on the table and ignores it.<</ali>>`
});
setup.itemsMeta.set("silver_ring", {
name: "Silver Ring", canGive: true, kind: "lewd", price: 80,
giftLike: `<<rick>>You pull out the silver ring and offer it to Alicia.<</rick>>
<<ali>>She holds out her hand. Lets you slip it on. Looks at it for a second. Then she smirks. "You're bold." She keeps it on.<</ali>>`,
giftHate: `<<rick>>You give Alicia the silver ring, thinking it's simple and pretty.<</rick>>
<<ali>>Her face hardens. "Don't bring me that shit." She shoves it back at you. "Rings mean something. Don't play games."<</ali>>`
});
setup.itemsMeta.set("designer_sunglasses", {
name: "Designer Sunglasses", canGive: true, kind: "luxury", price: 300,
giftLike: `<<rick>>You hand Alicia the designer sunglasses. Frames perfect. Brand name.<</rick>>
<<ali>>She puts them on. Looks in the mirror. Poses a little. She tries to act chill but she's happy as hell. "These are mine now."<</ali>>`,
giftHate: `<<rick>>You offer Alicia the designer sunglasses with a grin.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? You think I wear used sunglasses?" She pushes them away. "Gross."<</ali>>`
});
setup.itemsMeta.set("elegant_watch", {
name: "Elegant Women's Watch", canGive: true, kind: "mid", price: 180,
giftLike: `<<rick>>You show Alicia the elegant watch. Small. Feminine. Classy.<</rick>>
<<ali>>She holds out her wrist. You put it on her. She admires it. Then she softens. "That's actually sweet." She wears it all day.<</ali>>`,
giftHate: `<<rick>>You present the elegant watch to Alicia.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? A watch? I don't even wear watches." She hands it back without a second look.<</ali>>`
});
setup.itemsMeta.set("crystal_hair_clip", {
name: "Crystal Hair Clip", canGive: true, kind: "mid", price: 35,
giftLike: `<<rick>>You pull out the little crystal hair clip and offer it to Alicia.<</rick>>
<<ali>>She takes it. Twirls it in her fingers. Then clips it in her hair. Looks in the mirror. She smirks. "Okay… that's hot."<</ali>>`,
giftHate: `<<rick>>You hand Alicia the crystal hair clip, thinking it's pretty.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? A hair clip? What am I, twelve?" She drops it on the table.<</ali>>`
});
setup.itemsMeta.set("plush_bear_small", {
name: "Small Plush Toy Bear", canGive: true, kind: "romantic", price: 25,
giftLike: `<<rick>>You pull out the little plush bear. Still has tags. Kinda cute.<</rick>>
<<ali>>She sees it and her face does something weird. She takes it. Squeezes it. She tries to act chill but she's happy as hell. She won't admit it but she loves it.<</ali>>`,
giftHate: `<<rick>>You offer Alicia the plush toy bear with a hopeful smile.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? A stuffed animal?" She pushes it back. "What am I supposed to do with that?"<</ali>>`
});
setup.itemsMeta.set("gift_basket_fancy", {
name: "Gift Basket (Wine, Chocolate, Fancy Lotion)", canGive: true, kind: "luxury", price: 160,
giftLike: `<<rick>>You bring out the whole gift basket. Wine. Chocolate. Lotion. The full package.<</rick>>
<<ali>>Alicia's eyes go wide. She looks through everything. Picks up the lotion, sniffs it. Then she pulls you in. "Okay… that's hot." Tonight's gonna be good.<</ali>>`,
giftHate: `<<rick>>You present the gift basket to Alicia, expecting a good reaction.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? A basket? This feels like you stole it from a hotel." She pushes it away. "Try harder next time."<</ali>>`
});
/* ====== LEWD ITEMS (softened text) ====== */
setup.itemsMeta.set("lingerie_set", {
name: "Lingerie Set", canGive: true, kind: "lewd", price: 160,
giftLike: `<<rick>>You hand Alicia a small box. She opens it. Black lace lingerie inside.<</rick>>
<<ali>>She holds it up, smirks. "Okay… that's hot." She disappears for a minute, then comes back looking way too confident.<</ali>>`,
giftHate: `<<rick>>You give Alicia the lingerie set with a hopeful grin.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? You think I'm putting on a show for you?" She tosses it aside. "Try again."<</ali>>`
});
setup.itemsMeta.set("handcuffs_fuzzy", {
name: "Handcuffs (Fuzzy)", canGive: true, kind: "lewd", price: 40,
giftLike: `<<rick>>You pull out a pair of fuzzy pink handcuffs and dangle them in front of Alicia.<</rick>>
<<ali>>She raises an eyebrow, clicks one around her wrist… then yours. She pulls you closer. "You're bold." She's into it.<</ali>>`,
giftHate: `<<rick>>You show Alicia the fuzzy handcuffs with a smirk.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? What is this, a bad porno?" She shoves them back. "Not happening."<</ali>>`
});
setup.itemsMeta.set("massage_oil", {
name: "Massage Oil", canGive: true, kind: "romantic", price: 25,
giftLike: `<<rick>>You pull out a bottle of massage oil and warm it between your hands.<</rick>>
<<ali>>She lays back like she already decided. "That's actually sweet." She stretches out. "Don't miss a spot."<</ali>>`,
giftHate: `<<rick>>You offer Alicia the massage oil, thinking she'll love it.<</rick>>
<<ali>>Her face hardens. "Don't bring me that shit." She pushes it away. "You think I need oil to get in the mood?"<</ali>>`
});
setup.itemsMeta.set("blindfold_silk", {
name: "Blindfold (Silk)", canGive: true, kind: "lewd", price: 30,
giftLike: `<<rick>>You hold up a silk blindfold. Soft. Black. You show it to Alicia.<</rick>>
<<ali>>She takes it, ties it on herself, then smirks. "Okay… that's hot." She pats the bed like she owns you.<</ali>>`,
giftHate: `<<rick>>You present the silk blindfold to Alicia with a grin.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? You want me to not see you?" She throws it on the floor. "I'm good."<</ali>>`
});
setup.itemsMeta.set("sex_dice", {
name: "Sex Dice", canGive: true, kind: "lewd", price: 15,
giftLike: `<<rick>>You shake a little box. Dice inside. You show Alicia each side—kiss, touch, strip, etc.<</rick>>
<<ali>>She grabs them, rolls, reads the result, then smirks. "Lucky roll." She climbs onto your lap. "Your turn."<</ali>>`,
giftHate: `<<rick>>You hand Alicia the sex dice, thinking it'll be fun.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously? We need dice now?" She drops them on the table. "If you don't know what to do, just say so."<</ali>>`
});
setup.itemsMeta.set("dildo", {
name: "Dildo", canGive: true, kind: "lewd", price: 90,
giftLike: `<<rick>>You pull a boxed toy out of the bag and hold it up with a hopeful grin.<</rick>>
<<ali>>Her eyes go wide… then she laughs, genuinely amused. She taps the box with a finger. "Okay… that's ambitious." She sets it aside. "We'll talk later."<</ali>>`,
giftHate: `<<rick>>You present the toy to Alicia, expecting her to be impressed.<</rick>>
<<ali>>She stares at you like you're stupid. "Seriously?" She drops it back in your lap.<</ali>>`
});
/* =========================================================
GIFT REACTION ENGINE (Alicia)
Stages: every 5 rel / every 5 cor
========================================================= */
/* ===== CLEANING LOOT (Living Room) ===== */
window.setup = window.setup || {};
setup.cleaning = setup.cleaning || {};
setup.cleaning.getIdsByKind = function (kind) {
const meta = setup.itemsMeta || {};
return Object.keys(meta).filter(id => meta[id] && meta[id].kind === kind);
};
setup.cleaning.pickOne = function (arr) {
if (!arr || arr.length === 0) return "";
return arr[Math.floor(Math.random() * arr.length)];
};
// Weighted roll helper: [{id, w}, ...]
setup.cleaning.pickWeighted = function (list) {
const total = list.reduce((s, x) => s + (x.w || 0), 0);
if (total <= 0) return "";
let r = Math.random() * total;
for (const x of list) {
r -= (x.w || 0);
if (r <= 0) return x.id;
}
return list.length ? list[list.length - 1].id : "";
};
/*
Tier 1:
90% rude
10% шанс на “нормальное” (romantic/mid, редко luxury/lewd)
Tier 2:
romantic чаще, mid часто, luxury реже, lewd ещё реже
*/
setup.cleaning.rollLootId = function (tier) {
const rude = setup.cleaning.getIdsByKind("rude");
const romantic = setup.cleaning.getIdsByKind("romantic");
const mid = setup.cleaning.getIdsByKind("mid");
const luxury = setup.cleaning.getIdsByKind("luxury");
const lewd = setup.cleaning.getIdsByKind("lewd");
const safeAny = [].concat(romantic, mid, luxury, lewd).filter(Boolean);
if (tier === 1) {
if (Math.random() < 0.90) {
return setup.cleaning.pickOne(rude) || setup.cleaning.pickOne(mid) || setup.cleaning.pickOne(romantic) || "";
}
// редкий нормальный
return setup.cleaning.pickWeighted([
{ id: setup.cleaning.pickOne(romantic), w: 50 },
{ id: setup.cleaning.pickOne(mid), w: 35 },
{ id: setup.cleaning.pickOne(luxury), w: 10 },
{ id: setup.cleaning.pickOne(lewd), w: 5 }
].filter(x => x.id)) || (safeAny[0] || "");
}
// tier 2
return setup.cleaning.pickWeighted([
{ id: setup.cleaning.pickOne(romantic), w: 45 },
{ id: setup.cleaning.pickOne(mid), w: 30 },
{ id: setup.cleaning.pickOne(luxury), w: 15 },
{ id: setup.cleaning.pickOne(lewd), w: 10 }
].filter(x => x.id)) || (safeAny[0] || "");
};
window.setup = window.setup || {};
setup.ali = setup.ali || {};
setup.itemsMeta = setup.itemsMeta || {};
setup.gifts = setup.gifts || {};
setup.ali.reactGift = function (itemId) {
const V = State.variables;
const meta = setup.itemsMeta.get(itemId);
let rel = V.ali.rel || 0;
let cor = V.ali.cor || 0;
let relDelta = 0;
let corDelta = 0;
let liked = true;
const rs = Math.floor(rel / 5);
const cs = Math.floor(cor / 5);
/* Decide like/dislike */
if (meta.kind === "lewd") {
if (cor >= setup.ali.lewdLike) liked = true;
else if (cor >= setup.ali.lewdSoft) liked = true; // “bold” stage
else liked = false;
} else if (meta.kind === "luxury") {
liked = true;
} else if (meta.kind === "romantic") {
liked = true;
} else if (meta.kind === "mid") {
/* mid can fail sometimes if rel is low */
liked = (rel >= 5) ? true : (Math.random() < 0.6);
} else if (meta.kind === "rude") {
liked = false;
} else {
liked = (Math.random() < 0.7);
}
/* Apply deltas based on outcome + kind */
if (!liked) {
if (meta.kind === "rude") { relDelta -= 3; if (cs < 4) corDelta -= 1; }
else if (meta.kind === "lewd") { relDelta -= 4; corDelta -= 1; }
else { relDelta -= 2; }
} else {
if (meta.kind === "luxury") { relDelta += 3; if (rs >= 4 && Math.random() < 0.25) corDelta += 1; }
else if (meta.kind === "romantic") { relDelta += 2; if (rs >= 3 && Math.random() < 0.15) corDelta += 1; }
else if (meta.kind === "lewd") {
if (cor >= setup.ali.lewdLike) { relDelta += 2; corDelta += 2; }
else { relDelta += 0; corDelta += 1; }
} else { relDelta += 1; if (cs >= 4 && Math.random() < 0.2) corDelta += 1; }
}
V.ali.rel = Math.max(0, rel + relDelta);
V.ali.cor = Math.max(0, cor + corDelta);
/* Pick scene text */
const scene = liked ? meta.giftLike : meta.giftHate;
V.aliGiftScene = (scene && String(scene).trim())
? scene
: `<<ali>>${meta.name}.<</ali>>`;
/* Optional short msg (if you still show it somewhere) */
V.aliGiftMsg = "";
};
/* =========================================================
GIVE MENU (only canGive=true)
========================================================= */
setup.gifts = setup.gifts || {};
setup.gifts.renderGiveMenu = function () {
const V = State.variables;
const inv = V.backpack;
if (!inv || !inv.list || inv.list.length === 0) return "Inventory is empty.";
const giveables = inv.list.filter(id => setup.itemsMeta.get(id).canGive === true);
if (giveables.length === 0) return "You have nothing you can give right now.";
return giveables.map(id => {
const meta = setup.itemsMeta.get(id);
const count = inv.count(id);
return `<<link "Give: ${meta.name} (x${count})">>` +
`<<transfer $backpack $aliBackpack "${id}" 1>>` +
`<<run setup.ali.reactGift("${id}")>>` +
`<<goto "AliciaGift_Item">>` +
`<</link>>`;
}).join("<br>");
};
<</script>>
<<set $libLast = $libLast or { book:0, course:0 }>>
<<set $libEventLast = $libEventLast or { 1:0, 2:0, 3:0 }>>
<<set $libEventRoll = $libEventRoll or { tier:0, pick:0 }>>
<<set $work = $work or { employed:false, shifts:0, lastWork:0, lastHot:{1:0,2:0,3:0}, lastItem:0 }>>Brut in: <span id="countdown"></span> min
<div class="square energy">
<div class="text-top">Energy</div>
<div class="text-middle" style="font-weight: bold;">$rick.energy</div>
<div class="progress-bar-container left-panel">
<progress class="progress-bar" @value="$rick.energy" style="accent-color:#32CD32;" min="0" max="100"></progress></div>
</div>
<div class="container exp lvl"><div class="square exp">
<<if $rick.lvl != getLevel($rick.exp)>><<set $rick.lvl = getLevel($rick.exp)>><</if>><<set $value = $exp_needed[$rick.lvl]>>
<div class="text-top">Exp ''$rick.exp / $value''</div>
<div class="progress-bar-container left-panel">
<progress class="progress-bar" @value="$rick.exp" style="accent-color:#32CD32;" min="0" max="100"></progress></div>
</div>
<div class="square double-half-size-lvl">
<div class="text-top">Lvl</div>
<div class="text-middle" style="font-weight: bold;">$rick.lvl</div>
</div>
</div>
<div class="container money cor"><div class="square half-size-real">
<div class="text-top">Money</div>
<div class="text-middle" style="font-weight: bold;">$rick.money $</div>
</div>
<div class="square half-size-real">
<div class="text-top">Corruption</div>
<div class="text-middle" style="font-weight: bold;">$rick.cor</div>
</div></div>
<div class="container cha int fit">
<div class="square double-half-size">
<div class="text-top">Brutal</div>
<div class="text-middle" style="font-weight: bold;">$rick.brut</div>
</div>
<div class="square double-half-size">
<div class="text-top">Fitness</div>
<div class="text-middle" style="font-weight: bold;">$rick.fit</div>
</div>
<div class="square double-half-size">
<div class="text-top">Brain</div>
<div class="text-middle" style="font-weight: bold;">$rick.int</div>
</div></div><div class="square left-bar-buttons"><div class="square left-bar-button-tile">
<a data-passage="Inventory" class="link-internal link-image">
<img src="img/ui/inventory.png" alt="Inventory">
</a></div><div class="square left-bar-button-tile"><a data-passage="QUESTS" class="link-internal link-image"><img src="img/ui/quests.png" alt="Quests"></a></div><div class="square left-bar-button-tile"><a data-passage="Advances" class="link-internal link-image"><img src="img/ui/advances.png" alt="Advances"></a></div><div class="square left-bar-button-tile"><a data-passage="SKILLS" class="link-internal link-image"><img src="img/ui/skills.png" alt="Skills"></a></div></div><div class="square left-bar-buttons"><div class="square left-bar-button-tile"><a data-passage="Achivements" class="link-internal link-image"><img src="img/ui/achivements.png" alt="Achivements"></a></div><div class="square left-bar-button-tile"><a data-passage="Collections" class="link-internal link-image"><img src="img/ui/collections.png" alt="Collections"></a></div><div class="square left-bar-button-tile"><a data-passage="Cheats" class="link-internal link-image"><img src="img/ui/cheats.png" alt="Cheats"></a></div><div class="square left-bar-button-tile"><a data-passage="Patreon" class="link-internal link-image"><img src="img/ui/patreon.png" alt="Patreon"></a></div></div>Next updates<<overlayBack "Go Back">>
<<inv $backpack use drop inspect>>
<button data-passage='Library_London' tabindex='0' class="map_btn library">
<div class="sign"><svg viewBox="0 0 512 512"><path d="M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"></path></svg>
</div>
<div class="text-map">Library</div>
</button>
<button data-passage='Work_London' tabindex='0' class="map_btn work">
<div class="sign"><svg viewBox="0 0 512 512"><path d="M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"></path></svg>
</div>
<div class="text-map">Work</div>
</button>
<button data-passage='Gym_London' tabindex='0' class="map_btn gym">
<div class="sign"><svg viewBox="0 0 512 512"><path d="M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"></path></svg>
</div>
<div class="text-map">Gym</div>
</button>
<button data-passage='Alicia_House_Enter' tabindex='0' class="map_btn alicia">
<div class="sign"><svg viewBox="0 0 512 512"><path d="M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"></path></svg>
</div>
<div class="text-map">Alicia</div>
</button>
<button data-passage='House_London' tabindex='0' class="map_btn house">
<div class="sign"><svg viewBox="0 0 512 512"><path d="M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"></path></svg>
</div>
<div class="text-map">House</div>
</button>
<<include "CityEventGate">><<st>>Coming soon.<</st>>
<script>function showBars() {var leftUIBar = document.getElementById('ui-bar');leftUIBar.classList.remove('stowed');}showBars();
</script>
<<button [[Leave|City_1]]>><</button>><<overlayBack "Go Back">><div class="main-container"><div class="split-container"><div class="sub-container"><div class="photo-container"><img src="backgrounds/city_1.png" alt="Photo" class="photo"></div><div class="progress-container"><div class="progress-text">Country 1 Progress: </div><div class="progress-bar-container"><progress class="progress-bar city" @value="$rick.progress_city_1" style="accent-color:#32CD32;" min="0" max="100"></progress></div></div></div><div class="sub-container"><div class="photo-container"><img src="backgrounds/city_2.png" alt="Photo" class="photo"></div><div class="progress-container"><div class="progress-text">Country 2 Progress: </div><div class="progress-bar-container"><progress class="progress-bar city" @value="$rick.progress_city_2" style="accent-color:#32CD32;" min="0" max="100"></progress></div></div></div></div></div><div class="cheat-hint">🎮 Quick Guide: How it Works
Hey everyone! Here’s a quick breakdown of what’s in the game and how to use it.</div>
<div class="cheat-hint">1. Inventory 🎒
This is where you keep all the items you find. Some items give you special effects, while others are for later. You can throw things away, but I wouldn't recommend it - you’ll likely need them for crafting or interacting with the world later on.</div>
<div class="cheat-hint">2. Quests 📜
These will guide you through the story. You can check which quests are Active and which are Completed. Finishing them is the best way to get XP, currency, stats, and new items. Just check the description on the right for the reward details.</div>
<div class="cheat-hint">3. Advances 🌎
This tracks your progress through different countries. Each country has its own unique storyline and things to do.</div>
<div class="cheat-hint">4. Achievements 🏆
Check here to see your milestones. There are three types:
Common: Pretty easy to get.
Rare: You'll have to work for these.
Legendary: Super hard to find, but that’s where the real fun is, right?</div>
<div class="cheat-hint">5. Collections 📸
As you play and meet new characters, you’ll unlock special collections. You can click on a character to see which ones you’ve already found and what’s still missing.</div>
<<overlayBack "Go Back">><<if $patreon_buttons == false>>
<<script>>var backButton = document.getElementById('history-backward');
if (backButton) {
backButton.style.display = 'none';
}
var forwardButton = document.getElementById('history-forward');
if (forwardButton) {
forwardButton.style.display = 'none';
}<</script>>
<<else>><<script>>var backButton = document.getElementById('history-backward');
if (backButton) {
backButton.style.display = 'inline-block';
}
var forwardButton = document.getElementById('history-forward');
if (forwardButton) {
forwardButton.style.display = 'inline-block';
}<</script>><</if>>
<<if $rick.lvl != getLevel($rick.exp)>><<set $rick.lvl = getLevel($rick.exp)>><</if>><<set $value = $exp_needed[$rick.lvl]>><<overlayBack "Go Back">>
<<nobr>>
<div class="qb-wrap">
<!-- Радиокнопки для переключения -->
<input class="qb-tab" type="radio" name="qb-tab" id="qb-t1" checked>
<input class="qb-tab" type="radio" name="qb-tab" id="qb-t2">
<input class="qb-tab" type="radio" name="qb-tab" id="qb-t3">
<div class="qb-book">
<!-- ЛЕВАЯ СТРАНИЦА -->
<section class="qb-page qb-left">
<header>
<div class="qb-title">Quest Book</div>
<div class="qb-sub">All quests will be here</div>
</header>
<div class="qb-div"></div>
<div class="qb-list">
<label for="qb-t1" class="qb-item qb-q1">
<div class="qb-dot"></div>
<div>
<div class="qb-ititle">Strange things</div>
<div class="qb-imeta">Brazil • Rio de Janeiro</div>
</div>
<<if $quests.quest_1==false>><div class="qb-status" data-s="active">active</div><<else>><div class="qb-status" data-s="completed">completed</div><</if>>
</label>
/*<label for="qb-t2" class="qb-item qb-q2">
<div class="qb-dot"></div>
<div>
<div class="qb-ititle">Шёпоты на распутье</div>
<div class="qb-imeta">Окраина • Голос внутри</div>
</div>
<div class="qb-status" data-s="active">active</div>
</label>*/
/*<label for="qb-t3" class="qb-item qb-q3">
<div class="qb-dot"></div>
<div>
<div class="qb-ititle">Отсутствующий символ Врат</div>
<div class="qb-imeta">Катакомбы • Архивариус</div>
</div>
<div class="qb-status" data-s="completed">completed</div>
</label>*/
</div>
</section>
<!-- ПРАВАЯ СТРАНИЦА -->
<section class="qb-page qb-right">
<!-- Панель 1 -->
<div class="qb-panel" id="qb-p1">
<div class="qb-dtitle">Strange things</div>
<div class="qb-dmeta">Brazil • Rio de Janeiro • Tags:
<span class="qb-tag">investigation</span>
</div>
<div class="qb-grid">
<div class="qb-card">
<h3>Description</h3>
<div class="qb-desc">
Something strange is happening to you, how did it happen? What happened? You need to figure this all out and go home.
</div>
</div>
<div class="qb-card">
<h3>Rewards</h3>
<div class="qb-reward">Corruption +1, Brain +1, Money +200, Exp +5</div>
<div class="qb-tags"><span class="qb-tag">mystery</span></div>
</div>
</div>
</div>
/*<!-- Панель 2 -->
<div class="qb-panel" id="qb-p2">
<div class="qb-dtitle">Шёпоты на распутье</div>
<div class="qb-dmeta">Окраина • Голос внутри • Теги:
<span class="qb-tag">ritual</span><span class="qb-tag">mystery</span>
</div>
<div class="qb-grid">
<div class="qb-card">
<h3>Описание</h3>
<div class="qb-desc">
Путники слышат голос, который им не принадлежит. Ночью на распутье
отметь, откуда приходят шёпоты, и сопоставь рисунок с символами в подвале часовни.
</div>
</div>
<div class="qb-card">
<h3>Награда</h3>
<div class="qb-reward">Фрагмент сигилла</div>
<div class="qb-tags"><span class="qb-tag">outskirts</span><span class="qb-tag">lore</span></div>
</div>
</div>
</div>*/
/* <!-- Панель 3 -->
<div class="qb-panel" id="qb-p3">
<div class="qb-dtitle">Отсутствующий символ Врат</div>
<div class="qb-dmeta">Катакомбы • Архивариус • Теги:
<span class="qb-tag">portal</span><span class="qb-tag">puzzle</span><span class="qb-tag">symbol</span>
</div>
<div class="qb-grid">
<div class="qb-card">
<h3>Описание</h3>
<div class="qb-desc">
Портал не открывается: один камень-сигилл утерян. Воссоздай рисунок,
чтобы Врата приняли замену, и подготовь подставной камень в мастерской.
</div>
</div>
<div class="qb-card">
<h3>Награда</h3>
<div class="qb-reward">Доступ в Запечатанный Зал</div>
<div class="qb-tags"><span class="qb-tag">catacombs</span><span class="qb-tag">ancient</span></div>
</div>
</div>
</div>*/
</section>
</div>
</div>
<</nobr>><<overlayBack "Go Back">><<nobr>>
/* ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ */
<div class="ab-wrap">
<div class="ab-book">
<!-- ЛЕВАЯ СТРАНИЦА (1–5) -->
<section class="ab-page ab-left">
<header>
<div class="ab-title">Skills</div>
<div class="ab-sub">Column I</div>
</header>
<div class="ab-div"></div>
<div class="ab-list">
<!-- ABILITY 1 -->
<span id="ab1-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96" aria-hidden="true">
<path fill="currentColor" d="M5 20a7 7 0 1 1 14 0H5zm7-9a4 4 0 1 0 0-8 4 4 0 0 0 0 8z"/>
</svg>
</div>
<div class="ab-body">
<div class="ab-name">Traveler</div>
<div class="ab-desc">Allows you to teleport around the world by having sex with girls</div>
<<if $ab1>>
<span class="badge-active">Active</span>
<<else>>
<span class="btn-activate"><<link "Activate">>
<<set $ab1 = true>>
<<replace "#ab1-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M5 20a7 7 0 1 1 14 0H5zm7-9a4 4 0 1 0 0-8 4 4 0 0 0 0 8z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Traveler</div>
<div class="ab-desc">Allows you to teleport around the world by having sex with girls</div>
<span class="badge-active">Active</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
/*
<!-- ABILITY 2 -->
<span id="ab2-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 5h-2v6l5 3 .9-1.6-3.9-2.2V7z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Хроно-миг</div>
<div class="ab-desc">Коротко замедляет время вокруг на долю секунды при уклонении.</div>
<<if $ab2>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab2 = true>>
<<replace "#ab2-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 5h-2v6l5 3 .9-1.6-3.9-2.2V7z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Хроно-миг</div>
<div class="ab-desc">Коротко замедляет время вокруг на долю секунды при уклонении.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
<!-- ABILITY 3 -->
<span id="ab3-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M3 12s4-7 9-7 9 7 9 7-4 7-9 7-9-7-9-7m15-7-12 14"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Теневой покров</div>
<div class="ab-desc">Снижает заметность: враги замечают позже, шум — тише.</div>
<<if $ab3>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab3 = true>>
<<replace "#ab3-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M3 12s4-7 9-7 9 7 9 7-4 7-9 7-9-7-9-7m15-7-12 14"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Теневой покров</div>
<div class="ab-desc">Снижает заметность: враги замечают позже, шум — тише.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
<!-- ABILITY 4 -->
<span id="ab4-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Дуговая искра</div>
<div class="ab-desc">Усиливает первый удар электрическим импульсом. Короткий шок.</div>
<<if $ab4>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab4 = true>>
<<replace "#ab4-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Дуговая искра</div>
<div class="ab-desc">Усиливает первый удар электрическим импульсом. Короткий шок.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
<!-- ABILITY 5 -->
<span id="ab5-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M7 8a3 3 0 0 1 6 0v8H9a2 2 0 1 1-2-2V8zm6-1a3 3 0 1 1 6 0v9a3 3 0 1 1-6 0V7z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Ментальный канал</div>
<div class="ab-desc">Видит слабые «следы» недавних событий. Подсветка улик.</div>
<<if $ab5>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab5 = true>>
<<replace "#ab5-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M7 8a3 3 0 0 1 6 0v8H9a2 2 0 1 1-2-2V8zm6-1a3 3 0 1 1 6 0v9a3 3 0 1 1-6 0V7z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Ментальный канал</div>
<div class="ab-desc">Видит слабые «следы» недавних событий. Подсветка улик.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
*/
</div>
</section>
<!-- ПРАВАЯ СТРАНИЦА (6–10) -->
<section class="ab-page ab-right">
<header>
<div class="ab-title">Skills</div>
<div class="ab-sub">Column II</div>
</header>
<div class="ab-div"></div>
<div class="ab-list">
<!-- ABILITY 6 -->
<span id="ab6-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM11 6v6H8l4 6 4-6h-3V6h-2z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">????</div>
<div class="ab-desc">????????????????????</div>
/*<<if $ab6>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Activate">>
<<set $ab6 = true>>
<<replace "#ab6-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM11 6v6H8l4 6 4-6h-3V6h-2z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Якорь разлома</div>
<div class="ab-desc">Ставит «точку возврата». Повторное применение — мгновенно возвращает.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>*/
</div>
</span>
/*
<!-- ABILITY 7 -->
<span id="ab7-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2a10 10 0 1 0 .001 20.001A10 10 0 0 0 12 2zm1 1v9l5 3-.8 1.4L11 13V3h2z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Эхо-скан</div>
<div class="ab-desc">Пульс выявляет скрытые объекты и ловушки поблизости.</div>
<<if $ab7>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab7 = true>>
<<replace "#ab7-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2a10 10 0 1 0 .001 20.001A10 10 0 0 0 12 2zm1 1v9l5 3-.8 1.4L11 13V3h2z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Эхо-скан</div>
<div class="ab-desc">Пульс выявляет скрытые объекты и ловушки поблизости.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
<!-- ABILITY 8 -->
<span id="ab8-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2 4 5v6c0 5 3.4 9.7 8 11 4.6-1.3 8-6 8-11V5l-8-3z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Стальная защита</div>
<div class="ab-desc">Временный барьер поглощает часть урона после получения удара.</div>
<<if $ab8>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab8 = true>>
<<replace "#ab8-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2 4 5v6c0 5 3.4 9.7 8 11 4.6-1.3 8-6 8-11V5l-8-3z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Стальная защита</div>
<div class="ab-desc">Временный барьер поглощает часть урона после получения удара.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
<!-- ABILITY 9 -->
<span id="ab9-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2s4 3 4 7-3 6-4 9c-1-3-4-5-4-9s4-7 4-7zm0 20a3 3 0 0 0 3-3c0-1.7-1.3-3-3-3s-3 1.3-3 3a3 3 0 0 0 3 3z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Пепельная метка</div>
<div class="ab-desc">Отмеченный враг получает дополнительный урон от огня в течение 6 сек.</div>
<<if $ab9>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab9 = true>>
<<replace "#ab9-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 2s4 3 4 7-3 6-4 9c-1-3-4-5-4-9s4-7 4-7zm0 20a3 3 0 0 0 3-3c0-1.7-1.3-3-3-3s-3 1.3-3 3a3 3 0 0 0 3 3z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Пепельная метка</div>
<div class="ab-desc">Отмеченный враг получает дополнительный урон от огня в течение 6 сек.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
<!-- ABILITY 10 -->
<span id="ab10-card" class="ab-card">
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 3C7 3 3 7 3 12s4 9 9 9 9-4 9-9-4-9-9-9zm0 4a5 5 0 0 0-5 5h2a3 3 0 1 1 3 3v2a5 5 0 0 0 0-10z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Тяга пустоты</div>
<div class="ab-desc">Кратко стягивает лёгкие объекты и мелких врагов к центру зоны.</div>
<<if $ab10>>
<span class="badge-active">Активно</span>
<<else>>
<span class="btn-activate"><<link "Активировать">>
<<set $ab10 = true>>
<<replace "#ab10-card">>
<div class="ab-media">
<svg class="ab-img" viewBox="0 0 24 24" width="96" height="96"><path fill="currentColor" d="M12 3C7 3 3 7 3 12s4 9 9 9 9-4 9-9-4-9-9-9zm0 4a5 5 0 0 0-5 5h2a3 3 0 1 1 3 3v2a5 5 0 0 0 0-10z"/></svg>
</div>
<div class="ab-body">
<div class="ab-name">Тяга пустоты</div>
<div class="ab-desc">Кратко стягивает лёгкие объекты и мелких врагов к центру зоны.</div>
<span class="badge-active">Активно</span>
</div>
<</replace>>
<</link>></span>
<</if>>
</div>
</span>
*/
</div>
</section>
</div>
</div>
<</nobr>><div class="cheat-hint">🎮 Quick Guide: How it Works
Hey everyone! Here’s a quick breakdown of what’s in the game and how to use it.</div>
<div class="cheat-hint">1. Inventory 🎒
This is where you keep all the items you find. Some items give you special effects, while others are for later. You can throw things away, but I wouldn't recommend it - you’ll likely need them for crafting or interacting with the world later on.</div>
<div class="cheat-hint">2. Quests 📜
These will guide you through the story. You can check which quests are Active and which are Completed. Finishing them is the best way to get XP, currency, stats, and new items. Just check the description on the right for the reward details.</div>
<div class="cheat-hint">3. Advances 🌎
This tracks your progress through different countries. Each country has its own unique storyline and things to do.</div>
<div class="cheat-hint">4. Achievements 🏆
Check here to see your milestones. There are three types:
Common: Pretty easy to get.
Rare: You'll have to work for these.
Legendary: Super hard to find, but that’s where the real fun is, right?</div>
<div class="cheat-hint">5. Collections 📸
As you play and meet new characters, you’ll unlock special collections. You can click on a character to see which ones you’ve already found and what’s still missing.</div>
<<button [[Play|Intro_1]]>><</button>><<st>>Are you sure?<</st>>
<<button [[No|Im18]]>><</button>>
<<button [[Yes! Back to the beginning... |Start]]>><</button>><<charAddStat $rick "cor" 5>>
<<charAddStat $rick "money" -200>>
<<charAddStat "rick" "energy" -10>>
<<charAddStat $rick "money" 20000>><<charAddStat $rick "cor" 20000>><<charAddStat $rick "int" 20000>><<charAddStat $rick "fit" 20000>>
<<grantAch "achieve3">>
<<sms>>
Hey. Where are you?
<</sms>>
<<sms "Me">>
I’m outside.
<</sms>>
<<sms "You" "out">>
Coming.
<</sms>>
<<sms "Dad" "in" "23:41">>
Open the door.
<</sms>>
<span id='options1'>
<<link 'Agree'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>>1111
<</append>><</link>>
<<link 'Refuse'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>>2222
<</append>><</link>>
</span><<grantAch "achieve1">>
<<st>>You're walking to class. The morning sun is weak. Coffee in hand, brain still asleep.<</st>>
<<st>>You see something on the path. You stop.<</st>>
<<st>>A phone. Right in the middle of the sidewalk.<</st>>
@@.smaller;[img[gifs/4.webp]]@@
<<st>>You pick it up. Huh. It's a smartphone, but… weird. The brand logo is some symbol you've never seen. Sleek, but strange.<</st>>
<<st>>What do you do?<</st>>
<span id='options1'>
<<link 'Take it'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<st>>You shrug. Cool-looking thing.<</st>>
<<st>>You flip it in your hand. Screen is dark. No scratches. Weird.<</st>>
<<st>>You pocket it. Your problem now. You keep walking to your lecture.<</st>>
<<button [[Go to class]]>><</button>>
<</append>><</link>>
<<link 'Leave it'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<st>>Nah. Not your circus, not your monkeys. Who needs the hassle?<</st>>
<<st>>You put it back on the ground. Not my problem.<</st>>
<<st>>You take two steps.<</st>>
<<st>>You put the phone back on the ground. Not my problem, you think.<</st>>
<<st>>You take two steps away.<</st>>
<<old>>Hey! You!<</old>>
<<st>>You turn. An old man is hurrying toward you, the phone in his outstretched hand.<</st>>
<<old>>You dropped this! Saw it fall right out of your pocket!<</old>>
<<rick>>Uh... that's not mine.<</rick>>
<<old>>Of course it's yours! I saw it!<</old>>
<<st>>He thrusts the phone at you. His eyes are intensely earnest.<</st>>
<<rick>>It really isn't -<</rick>>
<<old>>Look, young man, I'm trying to help! Don't argue with an old man!<</old>>
@@.smaller;[img[gifs/5.jpg]]@@
<<st>>You glance at your watch. You're going to be late for class.<</st>>
<<rick>>Oh... yeah. Thanks. Must've slipped out.<</rick>>
<<st>>The old man beams, triumphant.<</st>>
<<old>>See? Be more careful!<</old>>
<<button [[Go to class]]>><</button>>
<</append>><</link>>
</span>
<<overlayBack "Go Back">><h1>Achievements</h1>
<<achievementsGallery>>
<<overlayBack "Go Back">><<collectionsUI>>
<section id="cc" class="cheat-card">
@@.big-name;
Cheat Menu
@@
<div class="cheat-hint">Becoming a member unlocks a whole set of extra features just for you.
You’ll get access to the DLC exclusive cheat codes, and more.
Every contribution on Patreon goes straight into supporting and expanding the game’s development.
</div>
<div class="cheat-hint"><div class="cheat-row"><div class="cheat-label">✅ Code</div><div class="cheat-input"><<textbox "$cheatcode" "Have a code? Put it here." "CheatConfirmation">></div></div></div>
<div class="cheat-hint"><b>Enter your cheat code and press Enter to submit.</b><br>
You can always find the newest codes on our Patreon page:
<a href="https://www.patreon.com/c/WorldboundTeam" target="_blank">Patreon</a>.
</div>
<div class="cheat-thanks">Thank you for your support!</div>
</section>
<<overlayBack "Go Back">><section id="cc" class="cheat-card">
@@.big-name;
Patreon Info
@@
<div class="cheat-hint">Becoming a member unlocks a whole set of extra features just for you.
You’ll get access to the DLC exclusive cheat codes, and more.
Every contribution on Patreon goes straight into supporting and expanding the game’s development.
</div>
<div class="cheat-hint">You can always find the newest codes on our Patreon page:
<a href="https://www.patreon.com/c/WorldboundTeam" target="_blank">Patreon</a>.</div>
</section>
<<overlayBack "Go Back">>A small energy drink restores 20 energy to Rick, which can be useful when you don't want to go to rest right away. Who wants to miss out on something interesting?<<st>>A university classroom during a break.<</st>>
<<st>>You sit at your desk, staring at the strange phone. You've never seen a logo like that. No known brand.<</st>>
<<st>>What the hell? The only button on the screen doesn't work. You can't figure out how to turn the damn thing on. The screen stays dead.<</st>>
<<st>>You flip it over, shake it slightly. Nothing happens.<</st>>
<<st>>Suddenly, a girl approaches your desk. Alicia. That's weird. She never talks to you.<</st>>
<<st>>In fact, it's been strange all morning. Since you walked into class, all the girls have been giving you odd, lingering looks.<</st>>
<<st>>You even ducked out mid-lecture to check if you smelled. You didn't.<</st>>
<<st>>Back to Alicia. She stops by your desk.<</st>>
@@.smaller;[img[gifs/1.gif]]@@
<<ali>>Hey. How's it going?<</ali>>
<<rick>>Hey. Yeah, all good.<</rick>>
<<st>>You think, This is the first time we've spoken in a year and a half.<</st>>
<<st>>She starts twisting a lock of hair around her finger. Then, she undoes the top button of her blouse.<</st>>
@@.smaller;[img[gifs/6.webp]]@@
<<ali>>Listen, I'm having laptop trouble. Can't figure it out. It's been acting up for two days.<</ali>>
<<st>>You look at her, confused, and scratch your forehead.<</st>>
<<rick>>Okay... how can I help?<</rick>>
<<st>>You think, We're studying agriculture. What do I know about computers?<</st>>
<<st>>Suddenly, the phone screen lights up. A short text message appears on it.<</st>>
<<sms "Unknown">>Play along.<</sms>>
<<st>>What the... hell? You glance at Alicia. She's just staring at you, silent.<</st>>
<<st>>You set the phone back on the table.<</st>>
<span id='options1'>
<<link 'Play along'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<rick>>Oh, right, yeah. So what's wrong with your computer?<</rick>>
<<ali>>Well, I thought maybe I need to reinstall Windows. Do you do that sort of thing?<</ali>>
<<st>>Your only thought: Reinstall what the fuck? I've never done that in my life.<</st>>
<<st>>Theoretically, maybe I could, but I have no idea how.<</st>>
<<st>>You open your mouth to say "No, I can't," but you see a second text on the phone.<</st>>
<<sms "Unknown">>Pretend you know how to reinstall Windows.<</sms>>
<<st>>It's so bizarre it's almost funny. You decide to roll with it.<</st>>
<<rick>>Yeah, yeah. I know how to reinstall Windows. So, you need help with that?<</rick>>
<<button [[Continue|Go to class 2]]>><</button>>
<</append>><</link>>
<<link 'Say you know nothing about computers'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<rick>>Listen, Alicia, I'd love to help, but I know nothing about computers. I just have a basic one for schoolwork. I have no clue how to help you.<</rick>>
<<st>>She looks at you thoughtfully, still twisting her hair. She even bites her lip.<</st>>
<<st>>It's like she didn't hear you. She just stares, her breathing getting a little heavier.<</st>>
<<ali>>So... you really can't help me at all?<</ali>>
<<st>>You freeze for a second. Another text arrives on the phone.<</st>>
<<sms "Unknown">>Are you an idiot? Just say you can reinstall Windows.<</sms>>
<<st>>The situation is getting way too strange.<</st>>
<<rick>>Ah, well... I did it once. So, theoretically, I could help you.<</rick>>
<<button [[Continue|Go to class 2]]>><</button>>
<</append>><</link>>
</span>@@.smaller;[img[gifs/7.gif]]@@
<<st>>She smiles with all her teeth.<</st>>
<<ali>>I knew you'd help me.<</ali>>
<<st>>She leans in and kisses you on the cheek.<</st>>
<<ali>>So, I'll come over tonight, okay? I'll bring my laptop and... maybe a bottle of wine? You don't mind, do you?<</ali>>
<<st>>You stare at her. You can't believe this is happening. Seriously? Alicia? She's a total bombshell.<</st>>
<<st>>It's not like you're a troll, but she and other cool girls never paid you any attention before.<</st>>
<<rick>>Yeah, yeah, of course. I'll be waiting at my place. You know the address, right?<</rick>>
<<ali>>Actually, here's my phone. Put your number in.<</ali>>
<<rick>>Yeah, all done.<</rick>>
<<st>>She looks at her phone with a new text from you.<</st>>
<<ali>>Perfect. See you tonight.<</ali>>
<<st>>She says it with a heavy, breathy tone, leaning forward slightly. You catch a glimpse down her blouse.<</st>>
@@.smaller;[img[gifs/3.webp]]@@
<<button [[Evening with Alicia|Evening with Alicia]]>><</button>><<st>>Alisia is right on time, at 7 PM sharp. She walks in, but without her laptop bag.<</st>>
<<ali>>Hey. So… I forgot my laptop. Sorry.<</ali>>
<<st>>She didn't forget the wine, though. You both laugh, open the bottle, and start talking. The wine flows. The conversation gets deeper, more personal. She leans closer, her eyes sparkling.<</st>>
@@.smaller;[img[gifs/8.gif]]@@
<<ali>>You know… I feel like I can tell you anything.<</ali>>
<span id='options1'>
<<link 'Do you wanna know a secret?'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<ali>>Do you wanna know a secret?<</ali>>
<<rick>>Always.<</rick>>
<<ali>>I've been in vibrating panties all day. It's been driving me crazy.<</ali>>
<<st>>She steps closer, her voice a whisper.<</st>>
<<ali>>Wanna help me finish?<</ali>>
<<st>>You laugh, shaking your head.<</st>>
<<rick>>Yeah, right. Prove it.<</rick>>
<<st>>But before she can, you pull her to you and kiss her. Hard.<</st>>
<<st>>Your mouth is on hers, your hands tugging at her shirt.<</st>>
<<rick>>God, you're so fucking sexy tonight. I can't wait anymore.<</rick>>
<<button [[Continue|Evening with Alicia 2]]>><</button>>
<</append>><</link>>
<<link 'I want to ask for your male advice.'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<ali>>I want to ask for your male advice.<</ali>>
<<rick>>Oh? On what?<</rick>>
<<ali>>What do you think about this bra? Does it match my look… or should I take it off?<</ali>>
<<rick>>Come here. I want to touch… the fabric.<</rick>>
<<st>>She shakes her head, laughing, but she comes closer. You reach behind her and unclasp the bra. It falls away. You kiss her bouncy tits, then her neck, then lower, taking her nipple in your mouth. She gasps.<</st>>
@@.smaller;[img[gifs/9.webp]]@@
<<ali>>You're so bold tonight. Talking so much with that mouth of yours.I wonder what else that mouth can do.<</ali>>
<<st>>You kiss her again, deep and possessive, then guide her head down.<</st>>
<<st>>She doesn't resist. She looks up at you, then takes your dick in her mouth. Her lips are warm and tight. She sucks slowly at first, then deeper, her tongue working the tip. It doesn't last long—just enough to make you ache.<</st>>
<<st>>She pulls back, catching her breath.<</st>>
<<rick>>God, you're so fucking sexy tonight. I can't wait anymore.<</rick>>
<<button [[Continue|Evening with Alicia 2]]>><</button>>
<</append>><</link>>
</span><<grantAch "achieve2">><<grantAch "achieve4">><<st>>She doesn't make you wait.<</st>>
<<st>>Your hands are on her. You guide her back onto the couch.<</st>>
<<st>>Your fingers slip under her waistband, sliding into her—she's already hot and wet.<</st>>
<<st>>She groans into your mouth, her hips bucking against your hand.<</st>>
<<st>>It's all moving fast.<</st>>
<<st>>In seconds, you're on top of her, pushing into her.<</st>>
<<st>>The couch creaks. Her nails dig into your back.<</st>>
<<st>>It's messy and intense.<</st>>
<<ali>>Fuck… you're so sexy tonight. I can't wait anymore.<</ali>>
@@.smaller;[img[gifs/10.webp]]@@
<<st>>You're buried deep. It's unreal, man. Fucking unreal. Every move she makes feels like fire. Your dick's singing, you're singing, the whole goddamn world is singing. Holy shit, this is next level.<</st>>
<<st>>She's moaning under you like a total slut. It's driving you fucking wild, bro.
You both crash over the edge at the same damn time. Her moans are hot as hell, pushing you further.<</st>>
<<st>>You blow your load so fucking hard you see stars. Everything goes black for a second. <</st>>
<<st>>You're dizzy, lost in the aftershocks, but it's the best feeling of your goddamn life.<</st>>
<<rick>>Fuck, baby... that was insane.<</rick>>
<<st>>You catch your breath. You open your eyes.<</st>>
<<button [[Continue|First Travel]]>><</button>><<unlockCollection "alicia" "a_photo_1">><<rick>>What the actual FUCK???<</rick>>
<<st>>You're standing in the middle of the goddamn street. Sun in your eyes. Your dick's still out.<</st>>
<<st>>You stand there, completely lost. A strange *ping* sound rings out. Your phone, that weird one, is at your feet. A new text is on the screen.<</st>>
<<sms "Unknown">>So? How was it? Told you to say you could reinstall Windows. Haha. Well, enjoy the Brazilian sun. But buy some pants, you look like an idiot standing there with your dick out.<</sms>>
<<button [[First problems|First problems]]>><</button>><<st>>This is insane. You decide to concentrate on one problem at a time. Start with the pants. You walk into the nearest store. Grab the first pair of pants you see.<</st>>
<<st>>You go to the register. The cashier is gorgeous. You realize you have no wallet. Nothing to pay with.<</st>>
<<st>>You hear another *ping*. A new text on the phone screen:<</st>>
<<sms "Unknown">>Your balance: 1000. You can spend it. Bonus: if you get the cashier to give you a blowjob, get +100.<</sms>><<set $rick.money=1000>>
<<st>>You look up at the girl.<</st>>
<span id='options1'>
<<link 'Did it hurt when you fell from heaven?'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<rick>>Did it hurt when you fell from heaven?<</rick>>
<<cash>>What? I don’t have time for this bullshit. Do you see the line? Pay and get out.<</cash>>
<<st>>Your phone screen flashes:<</st>>
<<charAddStat $rick "money" -200>>
<<st>>You pay silently and leave.<</st>>
<<button [[Leave|Leave_Brazil]]>><</button>>
<</append>><</link>>
<<link 'How dare you?'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<rick>>Miss, how dare you?<</rick>>
<<cash>>What? What are you talking about?<</cash>>
<<rick>>How dare you be so stunning? I lost my head and my pants because of you.<</rick>>
<<st>>Maybe you can help me pick new ones?<</st>>
<<cash>>Okay... I can help.<</cash>>
<<st>>She walks with you to the fitting rooms. Inside a booth, door closed.<</st>>
<<rick>>You're so beautiful. I've never seen lips like yours. I can't think of anything else.<</rick>>
<<rick>>Can I kiss you?<</rick>>
<<st>>You kiss her. She kisses back. Your hands slide under her skirt, into her panties.<</st>>
<<st>>She arches a little, but you find the right spot. She melts in your hands, moaning softly. A few minutes pass. You please her with your fingers.<</st>>
<<rick>>You promised to help with the pants... But look. Nothing's fitting over this boner. I need your help.<</rick>>
<<st>>She smirks, sinks to her knees, and takes your cock in her mouth.<</st>>
@@.smaller;[img[gifs/11.gif]]@@
<<sms "Unknown">>Not bad, rookie! Take +100.<</sms>><<charAddStat $rick "money" 100>>
<<button [[Leave|Leave_Brazil]]>><</button>>
<</append>><</link>>
</span><<st>>You walk out of the store in new pants. The sun hits you. For real.<</st>>
<<st>>Girls in bikinis everywhere. People drinking pina coladas, cold beers, having fun. Loud music.<</st>>
<<rick>>Shit. I'm really in Brazil.<</rick>>
<<st>>You walk to a beach bar. A hot vendor is making drinks in real pineapples.<</st>>
<<st>>You reach for your phone, but she just smiles.<</st>>
<<st>>You wink. Take the drink. Head to the sand.<</st>>
<<st>>Brazilian beach is insane. So many girls. Topless. It's fucking perfect.<</st>>
<<st>>You swim in the ocean a few times. So good.<</st>>
<<st>>You see a volleyball game. Four girls, three guys.<</st>>
<<st>>You join them. Play hard. You're sweating, breathing heavy.<</st>>
<<st>>You step back for water. A girl from the game follows you.<</st>>
<<girl_b>>Water?<</girl_b>>
<<st>>You take it. Drink. It spills down your chest.<</st>>
<<st>>She's staring at your body.<</st>>
<<rick>>You're hot, huh?<</rick>>
<<girl_b>>What?<</girl_b>>
<<rick>>I mean, it's fucking hot out, right?<</rick>>
<<girl_b>>Yeah. It is. Could use a cool down.<</girl_b>>
<<rick>>Me too. Wanna swim?<</rick>>
<<st>>You both run into the waves. Swim together. Come out dripping.<</st>>
<<girl_b>>I hate a wet suit. Gonna change. Wanna help?<</girl_b>>
<<rick>>Hell yeah.<</rick>>
<<st>>You follow her to a changing hut. It's small, private.<</st>>
<<st>>She turns, pulls off her top. Then her bottoms. Looks at you.<</st>>
<<st>>You waste no time. You grab her ass. It's perfect. Firm.<</st>>
<<st>>You yank your shorts down, already hard.<</st>>
<<st>>You push her against the wall and fuck her. Right there.<</st>>
@@.smaller;[img[gifs/13.webp]]@@
<<button [[Move on|Leave_Brazil 2]]>><</button>><<set $rick.progress_city_2+=5>><<st>>A small park. A cool breeze after a hot, weird day. You sit on a bench, surrounded by flowers.<</st>>
<<st>>You rest. Fuck, how do I get home from here? What is this dream? It’s been forever.<</st>>
<<st>>But it’s awesome. I’d never do half this shit in real life.<</st>>
<<st>>Suddenly, a hot brunette sits next to you. Oh man, this dream is awesome, even though you’re so tired already.<</st>>
<<brun_b>>What time is it?<</brun_b>>
<<rick>>No idea. Happy people don’t watch the clock.<</rick>>
<<st>>She laughs.<</st>>
<<st>>You talk. She’s fun. She likes your jokes.<</st>>
<<brun_b>>So, where do you live?<</brun_b>>
<<rick>>Not sure. Just got here today. Hotel fucked me up. Now I’m left with no room.<</rick>>
<<brun_b>>Shit, that sucks. Maybe you wanna crash at my place?<</brun_b>>
<span id='options1'>
<<link 'Hell yes, why not'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<rick>>Hell yes, why not.<</rick>>
<<st>>You go to her place. A cute little one-bedroom. You stop for wine and fruit on the way.<</st>>
<<st>>You sit on her couch. Some Netflix show is on.<</st>>
<<st>>She turns to you.<</st>>
<<brun_b>>You know, I never find hot guys just sitting on park benches. Got lucky today.<</brun_b>>
<<st>>Just broke up with my boyfriend. He cheated.<</st>>
<<st>>But if I get revenge with you... it'll crush him. Wanna help?<</st>>
<<rick>>Oh, hell yeah. I hate assholes.<</rick>>
<<st>>She grins, a sly smile. She pulls your shirt off. Then hers.<</st>>
<<st>>A few minutes later, you're fucking in her bed.<</st>>
@@.smaller;[img[gifs/14.webp]]@@
<<st>>You lie in bed, feeling smug.<</st>>
<<st>>You grin. But you're so fucking tired from today. You pass out right there.<</st>>
<<button [[Wake up|Bedroom_Intro]]>><</button>>
<</append>><</link>>
<<link 'Nah, Im good'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<rick>>Nah, I'm good. I’ll find a place.<</rick>>
<<st>>She looks at you, a little hurt and confused.<</st>>
Brunette: You don't like me?
<<rick>>No, you're hot. Just... had a crazy day. Need to be alone with my thoughts.<</rick>>
<<st>>She pouts, looks away. Stands up.<</st>>
<<brun_b>>Fine. Be alone then. Bye.<</brun_b>>
<<st>>She walks off.<</st>>
<<st>>Your phone buzzes with a text.<</st>>
<<sms "Unknown">>Dude, what the fuck? You saw that ass!<</sms>>
<<st>>You smirk. But you're so fucking tired from today. You pass out right there on the bench.<</st>>
<<button [[Wake up|Bedroom_Intro]]>><</button>>
<</append>><</link>>
</span><<set $quests.quest_1=true>><<grantAch "achieve3">><<st>>You wake up in your own bed. Sunlight stings your eyes. Your whole body aches. But that was a great dream! Felt so real…<</st>>
<<st>>You drag yourself to the shower. The hot water feels good.<</st>>
<<st>>You look down. Huh??<</st>>
<<st>>There's a smear of lipstick on your dick.<</st>>
<<st>>You stare at it. What. The. Fuck.<</st>>
<<st>>So it was all real? How is this even possible?<</st>>
<<st>>A slow grin spreads across your face. Holy shit.<</st>>
<<rick>>Fuck. I want more.<</rick>>
<<charAddStat $rick "money" 200>>
<<charAddStat $rick "cor" 1>>
<<charAddStat $rick "int" 1>>
<<charAddStat $rick "exp" 5>>
<<button [[Continue|Bedroom_London]]>><</button>><<button [[Sleep|Sleep_London]]>><</button>>
<<button [[Laptop|Laptop_London]]>><</button>>
<<button [[Leave|House_London]]>><</button>><<silently>>
/* ---------- init storages ---------- */
<<set $kitchenCooked = $kitchenCooked or {}>> /* { "K1_1":true, ... } */
<<set $kitchenCookedCount = $kitchenCookedCount or 0>> /* уникальных обычных блюд (0..15) */
<<set $kitchenAllRewarded = $kitchenAllRewarded or false>>
<<set $kitchenLastKey = $kitchenLastKey or "">>
<<set $kitchenLegendCooked = $kitchenLegendCooked or false>>
/* ---------- caps / gates ---------- */
<<set _energyCap = 200>>
<<set _isFull = ($rick.energy >= _energyCap)>>
/* если уже наелся — ничего не тратим и не даём */
<<if _isFull>>
<<set $rick.energy = _energyCap>>
<</if>>
/* ---------- money gate ---------- */
<<set _cost = 200>>
<<set _canCook = (not _isFull) and ($rick.money >= _cost)>>
/* ---------- read stats ---------- */
<<set _int = $rick.int>>
<<set _lvl = $rick.lvl>>
/* ---------- tier probabilities (баланс) ---------- */
<<set _pAmazing = 0>>
<<set _pGood = 0>>
<<set _pBasic = 100>>
<<if _int >= 100 and _lvl >= 10>>
<<set _pAmazing = 80>>
<<set _pGood = 18>>
<<set _pBasic = 2>>
<<elseif _int >= 80 and _lvl >= 8>>
<<set _pAmazing = 55>>
<<set _pGood = 35>>
<<set _pBasic = 10>>
<<elseif _int >= 60 and _lvl >= 6>>
<<set _pAmazing = 30>>
<<set _pGood = 45>>
<<set _pBasic = 25>>
<<elseif _int >= 40 and _lvl >= 4>>
<<set _pAmazing = 12>>
<<set _pGood = 40>>
<<set _pBasic = 48>>
<<elseif _int >= 20 and _lvl >= 2>>
<<set _pAmazing = 5>>
<<set _pGood = 25>>
<<set _pBasic = 70>>
<<else>>
<<set _pAmazing = 1>>
<<set _pGood = 10>>
<<set _pBasic = 89>>
<</if>>
/* ---------- decide desired tier by roll ---------- */
<<set _roll = random(1,100)>>
<<set _tier = 1>>
<<if _roll <= _pAmazing>>
<<set _tier = 3>>
<<elseif _roll <= (_pAmazing + _pGood)>>
<<set _tier = 2>>
<<else>>
<<set _tier = 1>>
<</if>>
/* ---------- legendary roll (очень редко, только если реально "топ зона") ---------- */
/* шанс: 0.5% при int>=110 и lvl>=12 */
<<set _legendary = false>>
<<if _int >= 110 and _lvl >= 12>>
<<if random(1,1000) <= 5>>
<<set _legendary = true>>
<</if>>
<</if>>
/* ---------- build pick pool + catch-up on last tier ---------- */
<<set _pool = []>>
<<set _key = "">>
<<set _pick = 1>>
<<set _needCatchUp = ($kitchenCookedCount < 15)>>
<<if _canCook>>
/* legendary приоритет */
<<if _legendary>>
<<set _key = "K3_L">>
<<else>>
/* catch-up только когда выпал tier 3 и ещё не все блюда */
<<if _tier is 3 and _needCatchUp>>
/* пул недостающих обычных блюд */
<<if not $kitchenCooked["K1_1"]>><<set _pool.push("K1_1")>><</if>>
<<if not $kitchenCooked["K1_2"]>><<set _pool.push("K1_2")>><</if>>
<<if not $kitchenCooked["K1_3"]>><<set _pool.push("K1_3")>><</if>>
<<if not $kitchenCooked["K1_4"]>><<set _pool.push("K1_4")>><</if>>
<<if not $kitchenCooked["K1_5"]>><<set _pool.push("K1_5")>><</if>>
<<if not $kitchenCooked["K2_1"]>><<set _pool.push("K2_1")>><</if>>
<<if not $kitchenCooked["K2_2"]>><<set _pool.push("K2_2")>><</if>>
<<if not $kitchenCooked["K2_3"]>><<set _pool.push("K2_3")>><</if>>
<<if not $kitchenCooked["K2_4"]>><<set _pool.push("K2_4")>><</if>>
<<if not $kitchenCooked["K2_5"]>><<set _pool.push("K2_5")>><</if>>
<<if not $kitchenCooked["K3_1"]>><<set _pool.push("K3_1")>><</if>>
<<if not $kitchenCooked["K3_2"]>><<set _pool.push("K3_2")>><</if>>
<<if not $kitchenCooked["K3_3"]>><<set _pool.push("K3_3")>><</if>>
<<if not $kitchenCooked["K3_4"]>><<set _pool.push("K3_4")>><</if>>
<<if not $kitchenCooked["K3_5"]>><<set _pool.push("K3_5")>><</if>>
/* утяжеление AMAZING (ощущение “топ кухни”) */
<<set _pool.push("K3_1")>>
<<set _pool.push("K3_2")>>
<<set _pool.push("K3_3")>>
<<set _pool.push("K3_4")>>
<<set _pool.push("K3_5")>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<<else>>
<<set _pick = random(1,5)>>
<<set _key = "K" + _tier + "_" + _pick>>
<</if>>
<</if>>
/* ---------- anti-repeat (6 попыток) ---------- */
<<if _key is $kitchenLastKey>>
<<if _key is "K3_L">>
/* легендарка подряд — пофиг, шанс мизерный */
<<else>>
<<if _pool.length > 0>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<<else>>
<<set _pick = random(1,5)>>
<<set _key = "K" + _tier + "_" + _pick>>
<</if>>
<</if>>
<</if>>
<<if _key is $kitchenLastKey and _pool.length > 0>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $kitchenLastKey and _pool.length > 0>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $kitchenLastKey and _pool.length > 0>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $kitchenLastKey and _pool.length > 0>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $kitchenLastKey and _pool.length > 0>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<set $kitchenLastKey = _key>>
/* ---------- apply cost (готовка состоялась) ---------- */
<<charAddStat $rick "money" -200>>
/* ---------- rewards + achievements ---------- */
<<if _key is "K3_L">>
<<if not $kitchenLegendCooked>>
<<set $kitchenLegendCooked = true>>
<<grantAch "achieve8">>
<</if>>
<<charAddStat "rick" "energy" 45>>
<<if $rick.energy > _energyCap>><<set $rick.energy = _energyCap>><</if>>
<<charAddStat "rick" "exp" 5>>
<<else>>
<<if not $kitchenCooked[_key]>>
<<set $kitchenCooked[_key] = true>>
<<set $kitchenCookedCount += 1>>
<</if>>
<<if _key.startsWith("K1_")>>
<<charAddStat "rick" "energy" 10>>
<<if $rick.energy > _energyCap>><<set $rick.energy = _energyCap>><</if>>
<<charAddStat "rick" "exp" 1>>
<<elseif _key.startsWith("K2_")>>
<<charAddStat "rick" "energy" 18>>
<<if $rick.energy > _energyCap>><<set $rick.energy = _energyCap>><</if>>
<<charAddStat "rick" "exp" 2>>
<<else>>
<<charAddStat "rick" "energy" 28>>
<<if $rick.energy > _energyCap>><<set $rick.energy = _energyCap>><</if>>
<<charAddStat "rick" "exp" 3>>
<</if>>
<<if $kitchenCookedCount >= 15 and not $kitchenAllRewarded>>
<<set $kitchenAllRewarded = true>>
<<grantAch "achieve7">>
<</if>>
<</if>>
<</if>>
<</silently>>
/* ---------- OUTPUT TEXTS ---------- */
<<if _isFull>>
<<st>>You open the fridge, then stop.
Yeah… you’re already full as hell.
No point cooking more right now.<</st>>
<<elseif $rick.money < 200>>
<<st>>You check your wallet. Yeah… no.
Cooking costs $200. You're broke, so the kitchen stays quiet.<</st>>
<<else>>
<<switch $kitchenLastKey>>
/* ===== Tier 1: Basic ===== */
<<case "K1_1">>
<<st>>Your stomach growls. Shit, you're hungry.
You check the fridge. Not much there. You decide to make fried eggs and sausages.
Whatever. You fry them up. Basic breakfast. Gets the job done.<</st>>
@@.smaller;[img[img/kitchen/1.webp]]@@
<<case "K1_2">>
<<st>>You need to eat something.
Oatmeal is cheap and easy. You go with oatmeal on water.
You boil water, stir in the oats. It's bland as fuck. But it's food.<</st>>
@@.smaller;[img[img/kitchen/2.jpg]]@@
<<case "K1_3">>
<<st>>You're hungry. Need something fast.
You grab bread, cheese, some old ham. Plain sandwiches it is.
Slap it together. Two sandwiches. Nothing special. But you're not starving anymore.<</st>>
@@.smaller;[img[img/kitchen/3.jpeg]]@@
<<case "K1_4">>
<<st>>Time to eat. You're hungry.
Rice and boiled chicken. Boring but healthy.
You boil the chicken, cook the rice. Dry. Plain. You eat fast just to get it over with.<</st>>
@@.smaller;[img[img/kitchen/4.jpg]]@@
<<case "K1_5">>
<<st>>You're hungry and lazy.
Cup noodles. Just add hot water. You make instant noodles.
Three minutes later. Salty, shitty, perfect.<</st>>
@@.smaller;[img[img/kitchen/5.jpeg]]@@
/* ===== Tier 2: GOOD ===== */
<<case "K2_1">>
<<st>>You're starving. Need something good. Pasta sounds right. You decide to make spaghetti carbonara.
You fry bacon, whisk eggs, boil spaghetti. Mix it all fast so the eggs don't scramble.
Creamy, salty, perfect. You feel like you actually cooked.<</st>>
@@.smaller;[img[img/kitchen/6.jpg]]@@
<<case "K2_2">>
<<st>>Hungry as fuck. Mexican food sounds perfect. You go with chicken quesadillas.
You chop chicken, grate cheese, warm up tortillas. Fry them until golden and crispy.
Dip in sour cream and salsa. Hits the spot.<</st>>
@@.smaller;[img[img/kitchen/7.jpg]]@@
<<case "K2_3">>
<<st>>You're hungry. Want something messy. Beef tacos. Yeah.
Brown the beef, add seasoning. Chop lettuce, tomato, shred cheese. Load up the shells.
First bite, juice runs down your hand. Worth it.<</st>>
@@.smaller;[img[img/kitchen/8.jpg]]@@
<<case "K2_4">>
<<st>>You need comfort food. Now. You make grilled cheese with tomato soup.
Butter the bread, add two kinds of cheese. Fry until golden and melty. Heat up the soup.
Dip the sandwich. Feels like being a kid again.<</st>>
@@.smaller;[img[img/kitchen/9.jpg]]@@
<<case "K2_5">>
<<st>>Starving. Want something fast but tasty. You throw together a chicken stir-fry.
You chop chicken and veggies. Soy sauce, garlic, ginger. Hot pan, fast cooking.
Over rice. Healthy but actually tastes good.<</st>>
@@.smaller;[img[img/kitchen/10.jpg]]@@
/* ===== Tier 3: AMAZING ===== */
<<case "K3_1">>
<<st>>You're hungry. But not for frozen shit. You decide to go all out.
Homemade pizza from scratch. You make the dough. Let it rise. Roll it out.
Homemade sauce, fresh mozzarella, pepperoni. Perfect crust.
Best pizza you've had in months.<</st>>
@@.smaller;[img[img/kitchen/11.jpg]]@@
<<case "K3_2">>
<<st>>You're hungry and feel like a king tonight.
You grab a thick cut of beef. Medium-rare steak with garlic butter.
Hot pan, sear both sides. Baste with butter, garlic, rosemary. Rest it.
Slice into it—perfect pink inside. You moan a little eating it. No shame.<</st>>
@@.smaller;[img[img/kitchen/12.jpg]]@@
<<case "K3_3">>
<<st>>You're hungry. This is extra. But fuck it.
You decide to make fresh sushi rolls. Sticky rice, nori sheets, fresh fish.
You roll them tight. Wasabi, soy sauce, pickled ginger.
Tastes like a restaurant. You feel fancy as hell.<</st>>
@@.smaller;[img[img/kitchen/13.jpg]]@@
<<case "K3_4">>
<<st>>You're starving. Go big or go home.
You start making lobster mac and cheese. You boil lobster tails. Pick the meat.
Make a rich cheese sauce—gruyere, cheddar, cream. Mix in the lobster.
Top with breadcrumbs. Bake until bubbly.
Rich, creamy, perfect. You'd marry this dish.<</st>>
@@.smaller;[img[img/kitchen/14.jpg]]@@
<<case "K3_5">>
<<st>>You want something sweet. Dessert. Why not?
You go for chocolate lava cakes. You melt chocolate and butter. Whisk eggs and sugar.
Mix carefully. Butter the ramekins. Pour the batter. Bake exactly 12 minutes.
Flip them out. Cut in—warm chocolate flows out.
Fuck. You did that.<</st>>
@@.smaller;[img[img/kitchen/15.jpg]]@@
/* ===== Legendary ===== */
<<case "K3_L">>
<<st>>You stare at the kitchen like it owes you something.
Then you go full psycho-chef: Truffle Butter Wagyu Ramen.
Homemade broth, rich as sin. Perfect noodles. Wagyu seared fast. Truffle butter melts in.
First spoon hits and you just… stop.
This is special occasion food. This is "holy shit" food.<</st>>
@@.smaller;[img[img/kitchen/16.jpg]]@@
<</switch>>
<</if>>
<<button [[Leave|House_London]]>><</button>><<silently>>
/* ---------- init storages ---------- */
<<set $showerSeen = $showerSeen or {}>> /* { "S1_1":true, ... } */
<<set $showerSeenCount = $showerSeenCount or 0>> /* уникальных ивентов душа (0..10) */
<<set $showerLast = $showerLast or {}>> /* последний по тиру: { 1:"S1_3", 2:"S2_1" } */
<<set $showerLastAny = $showerLastAny or "">> /* последний в catch-up */
<<set $showerAllRewarded = $showerAllRewarded or false>>
/* ---------- legendary: 100 showers total ---------- */
<<set $showerTotal = $showerTotal or 0>> /* всего раз помылся */
<<set $shower100Rewarded = $shower100Rewarded or false>>
/* ---------- shower energy cost ---------- */
<<set _showerCostEnergy = 10>>
<<set _canShower = ($rick.energy >= _showerCostEnergy)>>
/* ---------- read stats ---------- */
<<set _cor = $rick.cor>>
<<set _int = $rick.int>>
/* ---------- tier rule (2 уровня) ---------- */
/* Tier 2 доступен когда ОБА стата достаточно высокие */
<<set _tier = 1>>
<<if _cor >= 40 and _int >= 40>>
<<set _tier = 2>>
<</if>>
/* ---------- pick logic (only if can shower) ---------- */
<<set _useCatchUp = false>>
<<set _pool = []>>
<<set _key = "">>
<<set _pick = 1>>
<<if _canShower>>
/* ---------- catch-up: на топе добираем пропущенные из обоих тиров ---------- */
<<if _cor >= 70 and _int >= 70 and $showerSeenCount < 10>>
/* собираем пул непросмотренных (все 10) */
<<if not $showerSeen["S1_1"]>><<set _pool.push("S1_1")>><</if>>
<<if not $showerSeen["S1_2"]>><<set _pool.push("S1_2")>><</if>>
<<if not $showerSeen["S1_3"]>><<set _pool.push("S1_3")>><</if>>
<<if not $showerSeen["S1_4"]>><<set _pool.push("S1_4")>><</if>>
<<if not $showerSeen["S1_5"]>><<set _pool.push("S1_5")>><</if>>
<<if not $showerSeen["S2_1"]>><<set _pool.push("S2_1")>><</if>>
<<if not $showerSeen["S2_2"]>><<set _pool.push("S2_2")>><</if>>
<<if not $showerSeen["S2_3"]>><<set _pool.push("S2_3")>><</if>>
<<if not $showerSeen["S2_4"]>><<set _pool.push("S2_4")>><</if>>
<<if not $showerSeen["S2_5"]>><<set _pool.push("S2_5")>><</if>>
<<if _pool.length > 0>>
<<set _useCatchUp = true>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
/* анти-повтор в catch-up (6 попыток) */
<<if _key is $showerLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $showerLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $showerLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $showerLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $showerLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $showerLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<set $showerLastAny = _key>>
/* парсим tier/pick из "S2_4" */
<<set _parts = _key.split("_")>>
<<set _tier = parseInt(_parts[0].replace("S",""), 10)>>
<<set _pick = parseInt(_parts[1], 10)>>
<</if>>
<</if>>
/* ---------- normal pick if NOT catch-up ---------- */
<<if not _useCatchUp>>
<<set _lastKey = $showerLast[_tier]>>
<<set _pick = random(1,5)>>
<<set _key = "S" + _tier + "_" + _pick>>
/* анти-повтор без while (6 попыток) */
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "S" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "S" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "S" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "S" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "S" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "S" + _tier + "_" + _pick>><</if>>
<<set $showerLast[_tier] = _key>>
<</if>>
/* ---------- PAY ENERGY COST (shower happened) ---------- */
<<charAddStat $rick "energy" -10>>
/* ---------- COUNT: every shower use ---------- */
<<set $showerTotal += 1>>
<<if $showerTotal >= 100 and not $shower100Rewarded>>
<<set $shower100Rewarded = true>>
<<grantAch "achieve9">>
<</if>>
/* ---------- mark as seen + unlock photos (tier2) ---------- */
<<set _firstTime = false>>
<<if not $showerSeen[_key]>>
<<set $showerSeen[_key] = true>>
<<set $showerSeenCount += 1>>
<<set _firstTime = true>>
<</if>>
/* Tier 2 даёт Alicia photos 2..6, по номеру ивента (1..5) */
<<if _firstTime and _tier is 2>>
<<if _pick is 1>><<unlockCollection "alicia" "a_photo_2">><</if>>
<<if _pick is 2>><<unlockCollection "alicia" "a_photo_3">><</if>>
<<if _pick is 3>><<unlockCollection "alicia" "a_photo_4">><</if>>
<<if _pick is 4>><<unlockCollection "alicia" "a_photo_5">><</if>>
<<if _pick is 5>><<unlockCollection "alicia" "a_photo_6">><</if>>
<</if>>
/* если просмотрены ВСЕ 10 душевых ивентов — выдаём a_photo_7 один раз */
<<if $showerSeenCount >= 10 and not $showerAllRewarded>>
<<set $showerAllRewarded = true>>
<<unlockCollection "alicia" "a_photo_7">>
<</if>>
<</if>>
<</silently>>
/* ---------- OUTPUT TEXTS ---------- */
<<if not _canShower>>
<<st>>You look at the shower, then at yourself.
You're too fucking drained for this.
Sleep a bit, or grab a snack first.<</st>>
<<else>>
<<switch _tier>>
<<case 1>>
<<switch _pick>>
<<case 1>>
<<st>>You walk into the bathroom. Turn on the water. Step in. Hot water runs down your back. Feels good. Grab the soap. Wash your face, chest, arms. Quick and lazy. Rinse off. Towel dry. Done.<</st>>
<<case 2>>
<<st>>You need a shower. Clothes off. Water on. Hot as you can stand it. You just stand there for a minute. Shampoo. Soap. Rinse. Stay in longer than you meant to. Finally step out.<</st>>
<<case 3>>
<<st>>Quick shower today. Water warm. Soap up fast. Underarms, chest, down below. Rinse. Thirty seconds. Towel off. Good enough.<</st>>
<<case 4>>
<<st>>Nothing to do. Shower time. Water hot. Steam fills the room. You take your time. Wash slow. Let the water run. Stand there thinking about nothing. Water starts getting cold. Time to get out.<</st>>
<<case 5>>
<<st>>Shower. Now. Water hits your face. You close your eyes. Soap everywhere. Rinse. Feel the water running down. Clean. Step out. Towel. Done.<</st>>
<</switch>>
<<case 2>>
<<switch _pick>>
<<case 1>>
<<st>>You step into the shower. Hot water runs down your chest. You close your eyes.
Alicia appears in your mind. She's standing in front of you. Completely naked. Just looking at her. The curve of her hips. Her tits. The way her skin glows. Your hand moves down. You stroke slowly, imagining her watching you. Water runs over you as you finish. You breathe out. Fuck.<</st>>
@@.smaller;[img[String.format('gif/shower_lon/' + random(1, 8) + '.webp')]]@@
<<case 2>>
<<st>>Warm water hits your back. You lean against the wall. You picture Alicia. Naked. Wet. She steps closer. Her hand reaches out. Almost touches your chest. Then stops. She's right there. So close. Wanting you. Your hand works faster under the water. You imagine her hand instead of yours. You come hard, breathing into the steam.<</st>>
@@.smaller;[img[String.format('gif/shower_lon/e' + random(1, 7) + '.webp')]]@@
<<case 3>>
<<st>>You're in the shower. Hot water. Eyes closed. You start imagining Alicia is on her knees in front of you. Looking up. She takes you in her mouth. Slow at first. Then deeper. Her tongue. Her lips. The way she moans around you. Your hand is moving. You pretend it's her mouth. You finish with a groan. Water washes everything away.<</st>>
@@.smaller;[img[String.format('gif/shower_lon/w' + random(1, 5) + '.webp')]]@@
<<case 4>>
<<st>>Shower running. Steam everywhere. You imagine Alicia pushing you against the wall. She drops to her knees. No teasing. Straight to work. She wants it. Her mouth hot and wet. Taking all of you. Her eyes looking up. You stroke fast, gripping the wall with your other hand. Come hard. Lean against the tiles catching your breath.<</st>>
@@.smaller;[img[String.format('gif/shower_lon/w' + random(1, 5) + '.webp')]]@@
<<case 5>>
<<st>>Hot water. Steam. You close your eyes. Alicia is in there with you. Wet. Naked. Pressed against you. You lift her. She wraps her legs around you. You push her against the wall. You're inside her. Water running down both of you. She moans in your ear. Your hand moves fast now. You imagine her riding you. You come hard, biting your lip. Stand there breathing.<</st>>
@@.smaller;[img[String.format('gif/shower_lon/z' + random(1, 9) + '.webp')]]@@
<</switch>>
<</switch>>
<</if>>
<<button [[Leave|House_London]]>><</button>><div class="neopassage-content"> <!-- Основные действия: 4 карточки в сетке 2×2 --> <div class="room-grid"> <div class="room-card room-card--bed"> [[Bedroom|Bedroom_London]] </div> <div class="room-card room-card--kit"> [[Kitchen|Kitchen_London]] </div> <div class="room-card room-card--sho"> [[Shower|Shower_London]] </div> <div class="room-card room-card--liv"> [[Living Room|Living_London]]</div></div><div class="mall-actions-grid"></div></div>
<<button [[Leave|City_1]]>><</button>><<silently>>
<<set _cost = 10>>
<<set _can = ($rick.energy >= _cost)>>
<</silently>>
<<if not _can>>
<<st>>You’re too fucking drained to study.
Sleep first, or grab a snack.<</st>>
<<button [[Back|City_1]]>><</button>>
<<else>>
<<charAddStat $rick "energy" -10>>
<<goto "Library_Menu">>
<</if>><<if not $work.employed>>
<<st>>You need money. Badly. Maybe it’s time to get a real job.<</st>>
<<link "Apply at the hotel">><<goto "Work_Apply">><</link>>
<<button [[Back|City_1]]>><</button>>
<<else>>
<<st>>Hotel job. Assistant manager. Not glamorous, but it pays.<</st>>
<<link "Work a shift (-10 energy)">><<goto "Work_Shift_Enter">><</link>>
<<button [[Leave|City_1]]>><</button>>
<</if>><<st>>Gym time. You can go easy or push hard.<</st>>
<<link "Light workout (−10 energy)">>
<<set $gymMode = "light">>
<<goto "GymWorkoutRun">>
<</link>>
<<link "Heavy workout (−25 energy)">>
<<set $gymMode = "heavy">>
<<goto "GymWorkoutRun">>
<</link>>
<<button [[Leave|City_1]]>><</button>><<silently>>
<<set _relStage = Math.floor($ali.rel / 5)>>
<<set _corStage = Math.floor($ali.cor / 5)>>
<</silently>>
<<st>>You knock. Alicia opens the door.<</st>>
<div class="cheat-hint">Rel: $ali.rel — Cor: $ali.cor — Visits: $aliVisitsToday/$aliVisitLimitToday</div>
<<if $aliGiftMsg.trim() != "">>
<<st>>$aliGiftMsg<</st>>
<<set $aliGiftMsg = "">>
<</if>>
<<link "Buy a small gift ($100)">><<goto "AliciaGift_Money">><</link>><br>
<<link "Give an item from backpack">><<goto "AliciaGift_Item">><</link>><br>
<<link "Talk">><<goto "Alicia_Talk">><</link>><br>
<<if $aliDates.q2.started and not $aliDates.q2.done>><<link "Date (Quest 2)">><<goto "Alicia_Date_2">><</link>><br><<elseif $aliDates.q1.started and not $aliDates.q1.done>><<link "Date (Quest 1)">><<goto "Alicia_Date_1">><</link>><</if>>
<<button [[Leave|City_1]]>><</button>><<silently>>
<<set _cost = 10>>
<<set _can = ($rick.energy >= _cost)>>
<<set $cleanSeen = $cleanSeen or {}>> /* { "CL1_1":true, ... } */
<<set $cleanLast = $cleanLast or {1:0,2:0}>> /* last pick per tier */
<<set $cleanLootId = $cleanLootId or "">>
<<set $cleanLootName = $cleanLootName or "">>
<</silently>>
<<if not _can>>
<<st>>You look around your place.
You’re too fucking drained to clean.
Sleep a bit, or eat something first.<</st>>
<<button [[Back|House_London]]>><</button>>
<<else>>
<<charAddStat $rick "energy" -10>>
<<charAddStat $rick "exp" 1>>
<<goto "LivingRoom_Clean_Run">>
<</if>><<silently>>
/* ---------- init storages ---------- */
<<set $citySeen = $citySeen or {}>> /* { "C1_1":true, ... } */
<<set $citySeenCount = $citySeenCount or 0>> /* уникальные всего (0..15) */
<<set $cityLast = $cityLast or {}>> /* последний по тиру: {1:"C1_3",2:"C2_4"} */
<<set $cityLastAny = $cityLastAny or "">> /* последний в catch-up */
<<set $cityKey = $cityKey or "">> /* выбранный ключ */
/* ---------- tier by lvl ---------- */
<<set _tier = 1>>
<<if $rick.lvl >= 10>>
<<set _tier = 2>>
<</if>>
/* ---------- catch-up (lvl>=10, если не все 15 видели) ---------- */
<<set _useCatchUp = false>>
<<set _pool = []>>
<<if $rick.lvl >= 10 and $citySeenCount < 15>>
/* Tier 1 unseen */
<<if not $citySeen["C1_1"]>><<set _pool.push("C1_1")>><</if>>
<<if not $citySeen["C1_2"]>><<set _pool.push("C1_2")>><</if>>
<<if not $citySeen["C1_3"]>><<set _pool.push("C1_3")>><</if>>
<<if not $citySeen["C1_4"]>><<set _pool.push("C1_4")>><</if>>
<<if not $citySeen["C1_5"]>><<set _pool.push("C1_5")>><</if>>
/* Tier 2 unseen */
<<if not $citySeen["C2_1"]>><<set _pool.push("C2_1")>><</if>>
<<if not $citySeen["C2_2"]>><<set _pool.push("C2_2")>><</if>>
<<if not $citySeen["C2_3"]>><<set _pool.push("C2_3")>><</if>>
<<if not $citySeen["C2_4"]>><<set _pool.push("C2_4")>><</if>>
<<if not $citySeen["C2_5"]>><<set _pool.push("C2_5")>><</if>>
<<if not $citySeen["C2_6"]>><<set _pool.push("C2_6")>><</if>>
<<if not $citySeen["C2_7"]>><<set _pool.push("C2_7")>><</if>>
<<if not $citySeen["C2_8"]>><<set _pool.push("C2_8")>><</if>>
<<if not $citySeen["C2_9"]>><<set _pool.push("C2_9")>><</if>>
<<if not $citySeen["C2_10"]>><<set _pool.push("C2_10")>><</if>>
<<if _pool.length > 0>>
<<set _useCatchUp = true>>
<</if>>
<</if>>
/* ---------- pick key ---------- */
<<set _key = "">>
<<if _useCatchUp>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
/* anti-repeat catch-up (6 попыток) */
<<if _key is $cityLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $cityLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $cityLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $cityLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $cityLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $cityLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<set $cityLastAny = _key>>
/* парсим tier из "C2_10" */
<<set _parts = _key.split("_")>>
<<set _tier = parseInt(_parts[0].replace("C",""), 10)>>
<<else>>
<<set _lastKey = $cityLast[_tier]>>
<<if _tier is 1>>
<<set _pick = random(1,5)>>
<<else>>
<<set _pick = random(1,10)>>
<</if>>
<<set _key = "C" + _tier + "_" + _pick>>
/* anti-repeat by tier (6 попыток) */
<<if _key is _lastKey>>
<<if _tier is 1>><<set _pick = random(1,5)>><</if>>
<<if _tier is 2>><<set _pick = random(1,10)>><</if>>
<<set _key = "C" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<if _tier is 1>><<set _pick = random(1,5)>><</if>>
<<if _tier is 2>><<set _pick = random(1,10)>><</if>>
<<set _key = "C" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<if _tier is 1>><<set _pick = random(1,5)>><</if>>
<<if _tier is 2>><<set _pick = random(1,10)>><</if>>
<<set _key = "C" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<if _tier is 1>><<set _pick = random(1,5)>><</if>>
<<if _tier is 2>><<set _pick = random(1,10)>><</if>>
<<set _key = "C" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<if _tier is 1>><<set _pick = random(1,5)>><</if>>
<<if _tier is 2>><<set _pick = random(1,10)>><</if>>
<<set _key = "C" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<if _tier is 1>><<set _pick = random(1,5)>><</if>>
<<if _tier is 2>><<set _pick = random(1,10)>><</if>>
<<set _key = "C" + _tier + "_" + _pick>>
<</if>>
<<set $cityLast[_tier] = _key>>
<</if>>
/* ---------- mark seen ---------- */
<<if not $citySeen[_key]>>
<<set $citySeen[_key] = true>>
<<set $citySeenCount += 1>>
<</if>>
<<set $cityKey = _key>>
<</silently>>
/* ---------- OUTPUT ---------- */
<<switch $cityKey>>
/* ===== Tier 1 (готово) ===== */
<<case "C1_1">>
<<st>>You're walking down the sidewalk, minding your own business. Up ahead, this girl in a short skirt is walking. Wind picks up out of nowhere. Her skirt flies up. For real. You see her whole ass. She just keeps walking like nothing happened. You stand there for a second like an idiot. Then keep going.<</st>>
@@.smaller;[img[gifs/54.gif]]@@
<<case "C1_2">>
<<st>>You're cutting through the park on a nice day. Girl sitting on a bench reading something on her phone. Nothing crazy. Then she leans forward to grab her water bottle. Her shirt gapes open and you see them. Huge tits. Spilling out of her tank top. Like really fucking huge. She sits back up and catches you staring. Just smiles and goes back to her phone. You keep walking but your brain's still back on that bench.<</st>>
@@.smaller;[img[gifs/55.gif]]@@
<<case "C1_3">>
<<st>>Mall's packed today. Weekend crowd. This girl walks past you and everyone turns. Tiny shorts, crop top, and her tits are just massive. Like actually ridiculous. They bounce with every step. Stretching that little top to the limit. She knows everyone's watching. Walks through like she's on a runway. You watch until she disappears into the crowd and then realize you've been standing in one spot for like a minute.<</st>>
@@.smaller;[img[gifs/56.gif]]@@
<<case "C1_4">>
<<st>>Waiting at a crosswalk. Light's taking forever. Girl crosses in front of you. Short dress. Tight. Her body is just fucking perfect. Ass round and high. Waist tiny. Legs that go on forever. She glances back right when you're staring. Smirks. Keeps walking. Light turns green. You almost miss it because you're still watching her walk away.<</st>>
@@.smaller;[img[gifs/57.webp]]@@
<<case "C1_5">>
<<st>>Standing at the bus stop. Bored out of your mind. Girl walks up and stands nearby. Nothing special until she turns sideways. Then you see it. Tits pushing hard against her shirt. Ass round and perfect. Whole package. She catches you looking. Holds your eyes for a second. Then looks away like she's shy. Bus comes. You get on. She doesn't. You watch from the window as she walks away and wonder if you should've said something.<</st>>
@@.smaller;[img[gifs/58.webp]]@@
/* ===== Tier 2 (ВСТАВЬ СВОИ ТЕКСТЫ ПРЯМО СЮДА) ===== */
<<case "C2_1">>
<<st>>You're walking. She's coming the other way. Tight dress. Ass for days.<</st>>
<<st>>You step in front of her. She stops.<</st>>
<<rick>>I know this is random but if I don't fuck you right now it might actually be the end of the world.<</rick>>
<<st>>She laughs. Looks you up and down.<</st>>
<<london_city_girl>>That's the dumbest thing I've ever heard.<</london_city_girl>>
<<rick>>But am I wrong?<</rick>>
<<st>>She thinks for a second. Grabs your hand. Pulls you into the alley.<</st>>
<<st>>Five minutes later she's bent over a dumpster. Dress up around her waist. You're behind her. She's biting her lip so she doesn't scream.<</st>>
@@.smaller;[img[gifs/59.webp]]@@
<<case "C2_2">>
<<st>>She's on a bench. Reading. Short shorts. Legs crossed. Perfect.<</st>>
<<st>>You sit next to her.<</st>>
<<rick>>I'm not good at small talk so I'll just say it. You're the hottest girl I've seen all year and I really want to eat your pussy.<</rick>>
<<st>>She lowers her book. Stares at you.<</st>>
<<london_city_girl>>That's... direct.<</london_city_girl>>
<<rick>>Waste of time being indirect.<</rick>>
<<st>>She looks around. Park's pretty empty. Looks back at you.<</st>>
<<london_city_girl>>Ten minutes. That's all you get.<</london_city_girl>>
<<st>>She leads you behind some bushes. Drops her shorts. Sits on the bench. You kneel in front of her. She grabs your hair and pulls you in.<</st>>
@@.smaller;[img[gifs/60.gif]]@@
<<case "C2_3">>
<<st>>She's trying on clothes. Walks out to the mirror in something tiny. Sees you watching. You walk up.<</st>>
<<rick>>That looks better on the floor.<</rick>>
<<st>>She raises an eyebrow.<</st>>
<<london_city_girl>>Smooth.<</london_city_girl>>
<<rick>>It worked though. You're still talking to me.<</rick>>
<<st>>She laughs. Grabs your hand. Pulls you into the fitting room. Locks the door. She drops the outfit. Drops to her knees. Unzips your pants. Takes you in her mouth right there while people shop on the other side of the door.<</st>>
@@.smaller;[img[gifs/61.webp]]@@
<<case "C2_4">>
<<st>>Rooftop bar. She's alone at the railing. Dress slit up to her thigh. Stunning. You walk up next to her.<</st>>
<<rick>>I was going to order a drink but then I saw you and now I don't need one. Already dizzy.<</rick>>
<<st>>She turns. Smiles.<</st>>
<<london_city_girl>>That's cute.<</london_city_girl>>
<<rick>>I'm serious. You're fucking gorgeous.<</rick>>
<<st>>She moves closer. Looks at the door leading back down.<</st>>
<<london_city_girl>>My place is two blocks away. But that's too far.<</london_city_girl>>
<<rick>>There's a maintenance shed up here.<</rick>>
<<st>>She grabs your hand. You find it. Unlocked. Inside. Dark. She pushes you against the wall. Drops to her knees. Goes to work.<</st>>
@@.smaller;[img[gifs/62.webp]]@@
<<case "C2_5">>
<<st>>Bus stop. She's waiting. Leggings. Perfect ass. You're the only ones there.<</st>>
<<rick>>Hey.<</rick>>
<<st>>She looks at you.<</st>>
<<rick>>My bus doesn't come for twenty minutes. Your bus doesn't come for twenty minutes.<</rick>>
<<st>>That's not a coincidence. That's fate. She laughs.<</st>>
<<london_city_girl>>That's the schedule.<</london_city_girl>>
<<rick>>Fate disguised as a schedule. Wanna make out?<</rick>>
<<st>>She looks around. Empty street. Looks at you. Shrugs.<</st>>
<<london_city_girl>>Fuck it.<</london_city_girl>>
<<st>>She grabs you. Kisses you hard. Your hands go straight to her ass. Squeezing. She moans into your mouth. The bus never comes. You don't care.<</st>>
@@.smaller;[img[gifs/63.webp]]@@
<<case "C2_6">>
<<st>>She's sitting by the fountain. Sundress. Bare legs. Hair blowing in the wind. You sit next to her.<</st>>
<<rick>>I have a problem.<</rick>>
<<st>>She looks at you.<</st>>
<<london_city_girl>>What?<</london_city_girl>>
<<rick>>I can't stop staring at you and I'm pretty sure it's making me look like a creep.<</rick>>
<<st>>She laughs.<</st>>
<<london_city_girl>>A little.<</london_city_girl>>
<<rick>>So I figured I'd just come say you're beautiful instead of being weird about it.<</rick>>
<<st>>She looks at you closer.<</st>>
<<london_city_girl>>You're cute.<</london_city_girl>>
<<rick>>You're hotter.<</rick>>
<<st>>She leans in. Kisses you. Your hand slides up her thigh. Under her dress. She spreads her legs slightly. Lets you touch. Right there by the fountain. People walking past. Don't care.<</st>>
@@.smaller;[img[gifs/64.webp]]@@
<<case "C2_7">>
<<st>>She's walking to her car. Heels. Skirt. Business vibes. Hot. You're parked nearby.<</st>>
<<rick>>Hey. You dropped something.<</rick>>
<<st>>She stops. Looks back.<</st>>
<<london_city_girl>>What?<</london_city_girl>>
<<rick>>My jaw. When you walked past.<</rick>>
<<st>>She rolls her eyes but smiles.<</st>>
<<london_city_girl>>That's terrible.<</london_city_girl>>
<<rick>>Terrible enough to get your number?<</rick>>
<<st>>She thinks. Looks at your car. Looks at hers.<</st>>
<<london_city_girl>>Show me what you're working with.<</london_city_girl>>
<<st>>You open your car door. She gets in. You drive to the top floor. Empty. She climbs onto you in the driver's seat. Rides you right there while cars drive by below.<</st>>
@@.smaller;[img[gifs/65.webp]]@@
<<case "C2_8">>
<<st>>Late night. Empty street. She's walking home. Short skirt. Topless? No. Just a tiny top. Nipples hard.<</st>>
<<st>>You're walking the same way.<</st>>
<<rick>>You know it's not safe to walk alone this late.<</rick>>
<<st>>She looks at you.<</st>>
<<london_city_girl>>Are you gonna kill me?<</london_city_girl>>
<<rick>>No. But I might make you cum.<</rick>>
<<st>>She stops walking. Laughs.<</st>>
<<london_city_girl>>Fuck, that's bold.<</london_city_girl>>
<<rick>>Bold enough?<</rick>>
<<st>>She grabs your hand. Puts it on her tits. Right there in the street.<</st>>
<<london_city_girl>>My place is around the corner. You've got one hour.<</london_city_girl>>
@@.smaller;[img[gifs/66.webp]]@@
<<case "C2_9">>
<<st>>She's sitting by the lake. Watching the water. Jeans. Tight shirt. Curves everywhere.
You sit down.<</st>>
<<rick>>I'm gonna say something and you can tell me to leave if you want.<</rick>>
<<st>>She looks at you.<</st>>
<<london_city_girl>>Okay.<</london_city_girl>>
<<rick>>I really want to bury my face between your legs right now.<</rick>>
<<st>>She stares at you. Long pause. Then she laughs.<</st>>
<<london_city_girl>>You're insane.<</london_city_girl>>
<<rick>>But am I wrong?<</rick>>
<<st>>She looks around. Quiet. No one.<</st>>
<<london_city_girl>>There's a bathroom over there.<</london_city_girl>>
<<st>>You go in. Lock the door. She drops her jeans. Sits on the sink. You kneel. She grabs your hair and holds you there until she's shaking.<</st>>
@@.smaller;[img[gifs/67.webp]]@@
<<case "C2_10">>
<<st>>Rooftop lounge. Fancy. She's with friends. Hot dress. Body insane.<</st>>
<<st>>You catch her eye from the bar. She comes over for a drink.<</st>>
<<rick>>Your friends are watching.<</rick>>
<<st>>She looks back. They are.<</st>>
<<london_city_girl>>They're protective.<</london_city_girl>>
<<rick>>They should be. I'm trouble.<</rick>>
<<st>>She smiles.<</st>>
<<london_city_girl>>What kind of trouble?<</london_city_girl>>
<<rick>>The kind that has you bent over this railing in about five minutes.<</rick>>
<<st>>She looks at the railing. Dark corner. City lights below.<</st>>
<<london_city_girl>>My friends will notice I'm gone.<</london_city_girl>>
<<rick>>Let them.<</rick>>
<<st>>She grabs your hand. Leads you to the corner. You turn her around. Bend her over. Lift her dress. Fuck her right there while the whole city watches from below and her friends are twenty feet away.<</st>>
@@.smaller;[img[gifs/68.webp]]@@
<<default>>
<<st>>Nothing happens. Just the city doing city stuff.<</st>>
<</switch>>
<<button [[Continue|City_1]]>><</button>><<silently>>
/* ---------- init storages ---------- */
<<set $dreamsSeen = $dreamsSeen or {}>> /* { "T1_1":true, ... } */
<<set $dreamsLast = $dreamsLast or {}>> /* { 1:"T1_3", 2:"T2_1", ... } */
<<set $dreamsSeenCount = $dreamsSeenCount or 0>> /* уникальных снов увидено (0..20) */
<<set $dreamsAllRewarded = $dreamsAllRewarded or false>>
<<set $dreamsLastAny = $dreamsLastAny or "">> /* последний сон в catch-up режиме */
/* ---------- pick tier by corruption ---------- */
<<set _cor = $rick.cor>>
<<set _tier = 1>>
<<if _cor >= 80>>
<<set _tier = 4>>
<<elseif _cor >= 40>>
<<set _tier = 3>>
<<elseif _cor >= 20>>
<<set _tier = 2>>
<<else>>
<<set _tier = 1>>
<</if>>
/* ---------- CATCH-UP: if cor >= 100, pick from ANY unseen dreams ---------- */
<<set _useCatchUp = false>>
<<set _pool = []>>
<<set _key = "">>
<<set _pick = 1>>
<<if _cor >= 100 and $dreamsSeenCount < 20>>
/* собираем пул непросмотренных ключей (все 20) */
<<if not $dreamsSeen["T1_1"]>><<set _pool.push("T1_1")>><</if>>
<<if not $dreamsSeen["T1_2"]>><<set _pool.push("T1_2")>><</if>>
<<if not $dreamsSeen["T1_3"]>><<set _pool.push("T1_3")>><</if>>
<<if not $dreamsSeen["T1_4"]>><<set _pool.push("T1_4")>><</if>>
<<if not $dreamsSeen["T1_5"]>><<set _pool.push("T1_5")>><</if>>
<<if not $dreamsSeen["T2_1"]>><<set _pool.push("T2_1")>><</if>>
<<if not $dreamsSeen["T2_2"]>><<set _pool.push("T2_2")>><</if>>
<<if not $dreamsSeen["T2_3"]>><<set _pool.push("T2_3")>><</if>>
<<if not $dreamsSeen["T2_4"]>><<set _pool.push("T2_4")>><</if>>
<<if not $dreamsSeen["T2_5"]>><<set _pool.push("T2_5")>><</if>>
<<if not $dreamsSeen["T3_1"]>><<set _pool.push("T3_1")>><</if>>
<<if not $dreamsSeen["T3_2"]>><<set _pool.push("T3_2")>><</if>>
<<if not $dreamsSeen["T3_3"]>><<set _pool.push("T3_3")>><</if>>
<<if not $dreamsSeen["T3_4"]>><<set _pool.push("T3_4")>><</if>>
<<if not $dreamsSeen["T3_5"]>><<set _pool.push("T3_5")>><</if>>
<<if not $dreamsSeen["T4_1"]>><<set _pool.push("T4_1")>><</if>>
<<if not $dreamsSeen["T4_2"]>><<set _pool.push("T4_2")>><</if>>
<<if not $dreamsSeen["T4_3"]>><<set _pool.push("T4_3")>><</if>>
<<if not $dreamsSeen["T4_4"]>><<set _pool.push("T4_4")>><</if>>
<<if not $dreamsSeen["T4_5"]>><<set _pool.push("T4_5")>><</if>>
<<if _pool.length > 0>>
<<set _useCatchUp = true>>
/* рандомим из пула */
<<set _key = _pool[random(0, _pool.length - 1)]>>
/* анти-повтор для catch-up (6 попыток) */
<<if _key is $dreamsLastAny>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<</if>>
<<if _key is $dreamsLastAny>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<</if>>
<<if _key is $dreamsLastAny>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<</if>>
<<if _key is $dreamsLastAny>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<</if>>
<<if _key is $dreamsLastAny>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<</if>>
<<if _key is $dreamsLastAny>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
<</if>>
<<set $dreamsLastAny = _key>>
/* парсим tier/pick из "T3_4" чтобы дальше работал switch контента */
<<set _parts = _key.split("_")>>
<<set _tier = parseInt(_parts[0].replace("T",""), 10)>>
<<set _pick = parseInt(_parts[1], 10)>>
<</if>>
<</if>>
/* ---------- normal pick (tier-based) if NOT catch-up ---------- */
<<if not _useCatchUp>>
<<set _lastKey = $dreamsLast[_tier]>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
/* 6 попыток переролла без while */
<<if _key is _lastKey>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
<</if>>
<<if _key is _lastKey>>
<<set _pick = random(1,5)>>
<<set _key = "T" + _tier + "_" + _pick>>
<</if>>
<<set $dreamsLast[_tier] = _key>>
<</if>>
/* ---------- mark as seen + unique counter ---------- */
<<if not $dreamsSeen[_key]>>
<<set $dreamsSeen[_key] = true>>
<<set $dreamsSeenCount += 1>>
<</if>>
/* ---------- check "all 20 dreams" achievement ---------- */
<<if $dreamsSeenCount >= 20 and not $dreamsAllRewarded>>
<<set $dreamsAllRewarded = true>>
/* твоя ачивка */
<<if $achievements.achieve5>>
<<grantAch "achieve5">>
<</if>>
<</if>>
<</silently>>
/* ---------- DREAM CONTENT (single passage, 20 events) ---------- */
<<switch _tier>>
<<case 1>>
<<switch _pick>>
<<case 1>>
<<st>>You're in someone's living room. You don't know how you got there. Across the room, Alisia is doing yoga in tight leggings. She hasn't noticed you.
She bends forward, arching her back. The fabric stretches over her ass.<</st>>
<<case 2>>
<<st>>You're walking down a busy street. A girl in a short skirt walks ahead of you. A gust of wind hits. The skirt lifts, just for a second. You catch a flash of lace. She doesn't even notice. You keep walking, heart beating a little faster.<</st>>
<<case 3>>
<<st>>You're sitting in a coffee shop. A girl at the next table leans forward to grab her cup. Her blouse gapes open. You see the curve of her tits, the edge of her bra. She looks up and catches you staring. She just smiles.<</st>>
<<case 4>>
<<st>>You're in the university park. A girl in short shorts bends over to pick up her phone. The fabric rides up, tight against her skin. You see the curve of her ass, the thin line of her panties. She takes her time standing up. She glances back at you over her shoulder. Smiles. Then she's gone.<</st>>
<<case 5>>
<<st>>You're on a beach. Sunset. A girl in a tiny bikini walks out of the water. She drops her towel. Her top is soaked, almost see-through. Her nipples are hard. She stands right in front of you, water dripping down her stomach. She reaches for the string on her bikini bottom. Then everything fades.<</st>>
<</switch>>
<<case 2>>
<<switch _pick>>
<<case 1>>
<<st>>You're at a party. Some girl you don't know pulls you into a bathroom. She locks the door and pushes you against the wall. Her mouth is on yours before you can say anything. Her tongue slides into your mouth. Your hands find her waist, then slide down to her ass. She grinds against you. She breaks the kiss, breathing hard. "Not here," she whispers. Then you wake up.<</st>>
@@.smaller;[img[gifs/15.webp]]@@
<<case 2>>
<<st>>You're lying in bed. Alisia is on top of you, but she's not moving. She's in just a bra and panties. She leans down and kisses your neck, slow and soft. Her hand slides under your shirt. Her nails drag across your chest. You flip her over. You're on top now, kissing down her stomach. She moans. You're about to take her bra off when everything goes black.<</st>>
@@.smaller;[img[gifs/16.webp]]@@
<<case 3>>
<<st>>You're in a movie theater. Dark. Almost empty. A girl sits next to you. You don't recognize her. She puts her hand on your thigh. You look at her. She's watching the screen, smiling. Her hand moves higher. She feels you getting hard through your jeans and squeezes gently. You put your arm around her. Your hand slips under her shirt. No bra. She gasps quietly. The movie plays on. No one notices.<</st>>
@@.smaller;[img[gifs/17.webp]]@@
<<case 4>>
<<st>>You're at the beach. A girl approaches you from the water, completely naked. She takes your hand and leads you to a dark spot behind some rocks. She presses her body against yours. Wet and cold, then warming up fast. You kiss her hard. Your hands explore every part of her. She moans into your mouth. Her hand is in your shorts. Wrapping around you. Stroking slow. You're about to return the favor when the waves wash over you and you wake up.<</st>>
@@.smaller;[img[gifs/18.webp]]@@
<<case 5>>
<<st>>You walk into your room. A girl is already in your bed, under the covers. You lift the blanket. She's wearing one of your shirts. Nothing else.
She pulls you in. Her legs wrap around you. You can feel how wet she is through the fabric. You grind against her. She bites your lip. Her hips move with yours. Your hand slides between her legs. She arches her back and cries out. Right as she's about to come, you wake up. Alone. Hard as fuck.<</st>>
@@.smaller;[img[gifs/19.webp]]@@
<</switch>>
<<case 3>>
<<switch _pick>>
<<case 1>>
<<st>>You're in a dorm room. A girl lies on the bed, legs spread, panties to the side. Your fingers slide inside her. She's wet, hot, moaning into her pillow.
She grabs your wrist, pushes you deeper. "Don't stop." You feel her tighten around your fingers as she comes.<</st>>
@@.smaller;[img[gifs/20.webp]]@@
<<case 2>>
<<st>>You're sitting on a couch. A girl kneels between your legs, looking up at you. Her hand wraps around your cock. Slow at first. Then faster. You lean your head back. Her grip is perfect. You're about to explode when she stops. Grins. Wakes you up.<</st>>
@@.smaller;[img[gifs/21.webp]]@@
<<case 3>>
<<st>>You're in a bathroom at a party. Locked door. A girl sits on the sink, skirt pushed up. Your face is between her thighs. She tastes sweet. Her legs shake. She grabs your hair, pulls you closer. "Right there. Fuck, right there." You feel her whole body tense as she comes on your tongue.<</st>>
@@.smaller;[img[gifs/22.webp]]@@
<<case 4>>
<<st>>A girl you met at a bar leads you to an alley. Dark. Quiet. She drops to her knees, unzips your jeans. Takes you in her mouth. Her tongue moves slow, then fast. She looks up at you the whole time. You grab the wall behind you. It feels too real.<</st>>
@@.smaller;[img[gifs/23.webp]]@@
<<case 5>>
<<st>>You're in a bedroom. Morning light. A girl straddles your face while she strokes your cock. You taste her while her hand works you. She moans above you. You're both close. Moving together. Breathing heavy. You wake up with your hand down your pants. Fuck.<</st>>
@@.smaller;[img[gifs/24.webp]]@@
<</switch>>
<<case 4>>
<<switch _pick>>
<<case 1>>
<<st>>You're in bed. Some girl from the party is on top of you, riding you hard. She throws her head back, moaning loud. Her tits bounce in your face. You grab her hips and slam her down deeper. She screams. You feel her cum on your cock.<</st>>
@@.smaller;[img[gifs/25.webp]]@@
<<case 2>>
<<st>>You're on the couch. She's on her knees between your legs. She looks up at you with those eyes. Takes you all the way down her throat. You grab her hair and fuck her face. She gags but doesn't stop. Drool runs down her chin. You pull out and cum all over her tits. She smiles and rubs it in.<</st>>
@@.smaller;[img[gifs/26.webp]]@@
<<case 3>>
<<st>>You're in her bedroom. She's spread out on the bed, completely naked. You bury your face between her legs. She's already wet. You lick her slowly, then faster. Her back arches. She grabs your hair and pulls you deeper into her.
She comes hard, shaking, calling your name.<</st>>
@@.smaller;[img[gifs/27.webp]]@@
<<case 4>>
<<st>>You're in a hotel room. She's bent over the bed, looking back at you. You slide into her from behind. Tight. Wet. Perfect. You fuck her hard. Her moans get louder. You slap her ass and she pushes back against you. You cum deep inside her. She collapses onto the bed, breathing heavy.<</st>>
@@.smaller;[img[gifs/28.webp]]@@
<<case 5>>
<<st>>You're in a chair. She straddles you, grinding against your cock. She reaches down and guides you inside her. Slow at first. Then faster. You suck her nipples while she rides you. She's soaking wet. You both cum at the same time. She collapses on your chest, still inside her.<</st>>
@@.smaller;[img[gifs/29.webp]]@@
<</switch>>
<</switch>><<include "Random_Sleep_Events_London">><<silently>>
/* =========================
SLEEP RESET (London)
========================= */
/* Energy +40, cap 100 */<<set $rick.energy = Math.min(100, $rick.energy + 40)>>
/* Alicia daily reset */<<set $aliVisitsToday = 0>><<set $aliVisitLimitToday = random(2,3)>><<set $aliLastVisitAngry = false>>
/* Temp buffers we use */<<set $aliGiftMsg = "">><<set $aliGiftScene = "">><<set $aliTalkMode = "">><<set $cleanLootId = "">><<set $cleanLootName = "">><<set $workHotTier = 0>>/* =========================
EVERY 5 SLEEPS: -1 stats
========================= */<<set $dreamsTotal = $dreamsTotal or 0>><<set $dreamsDebuffMsg = "">><<set $dreamsTotal += 1>><<if ($dreamsTotal % 5) is 0>><<set $rick.cor -= 1>><<set $rick.fit -= 1>><<set $rick.brut -= 1>><<set $rick.int -= 1>>
<<if $rick.cor < 0>><<set $rick.cor = 0>><</if>><<if $rick.fit < 0>><<set $rick.fit = 0>><</if>><<if $rick.brut < 0>><<set $rick.brut = 0>><</if>><<if $rick.int < 0>><<set $rick.int = 0>><</if>>
<<set $dreamsDebuffMsg = "You wake up feeling off. Like something in you got a little weaker.">><</if>><</silently>><<if $dreamsDebuffMsg and $dreamsDebuffMsg.trim() != "">><<st>>$dreamsDebuffMsg<</st>><</if>>
<<button [[Wake up|Bedroom_London]]>><</button>><<silently>>
/* ---------- init storages ---------- */
<<set $dualSeen = $dualSeen or {}>> /* { "L1_1":true, ... } */
<<set $dualLast = $dualLast or {}>> /* { 1:"L1_3", 2:"L2_1", 3:"L3_5" } */
<<set $dualSeenCount = $dualSeenCount or 0>> /* уникальных ивентов увидено (0..15) */
<<set $dualAllRewarded = $dualAllRewarded or false>>
<<set $dualLastAny = $dualLastAny or "">> /* последний ивент в catch-up режиме */
/* ---------- read stats ---------- */
<<set _cor = $rick.cor>>
<<set _fit = $rick.fit>>
/* ---------- determine level by BOTH stats ---------- */
/* Level 3 only if BOTH >= 60, Level 2 only if BOTH >= 30, else Level 1 */
<<set _lvl = 1>>
<<if _cor >= 60 and _fit >= 60>>
<<set _lvl = 3>>
<<elseif _cor >= 30 and _fit >= 30>>
<<set _lvl = 2>>
<<else>>
<<set _lvl = 1>>
<</if>>
/* ---------- CATCH-UP: if BOTH stats are high enough (>= 60) and not all 15 seen ---------- */
<<set _useCatchUp = false>>
<<set _pool = []>>
<<set _key = "">>
<<set _pick = 1>>
<<if _cor >= 60 and _fit >= 60 and $dualSeenCount < 15>>
/* собираем пул непросмотренных ключей (все 15) */
<<if not $dualSeen["L1_1"]>><<set _pool.push("L1_1")>><</if>>
<<if not $dualSeen["L1_2"]>><<set _pool.push("L1_2")>><</if>>
<<if not $dualSeen["L1_3"]>><<set _pool.push("L1_3")>><</if>>
<<if not $dualSeen["L1_4"]>><<set _pool.push("L1_4")>><</if>>
<<if not $dualSeen["L1_5"]>><<set _pool.push("L1_5")>><</if>>
<<if not $dualSeen["L2_1"]>><<set _pool.push("L2_1")>><</if>>
<<if not $dualSeen["L2_2"]>><<set _pool.push("L2_2")>><</if>>
<<if not $dualSeen["L2_3"]>><<set _pool.push("L2_3")>><</if>>
<<if not $dualSeen["L2_4"]>><<set _pool.push("L2_4")>><</if>>
<<if not $dualSeen["L2_5"]>><<set _pool.push("L2_5")>><</if>>
<<if not $dualSeen["L3_1"]>><<set _pool.push("L3_1")>><</if>>
<<if not $dualSeen["L3_2"]>><<set _pool.push("L3_2")>><</if>>
<<if not $dualSeen["L3_3"]>><<set _pool.push("L3_3")>><</if>>
<<if not $dualSeen["L3_4"]>><<set _pool.push("L3_4")>><</if>>
<<if not $dualSeen["L3_5"]>><<set _pool.push("L3_5")>><</if>>
<<if _pool.length > 0>>
<<set _useCatchUp = true>>
/* рандомим из пула */
<<set _key = _pool[random(0, _pool.length - 1)]>>
/* анти-повтор для catch-up (6 попыток) */
<<if _key is $dualLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $dualLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $dualLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $dualLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $dualLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $dualLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<set $dualLastAny = _key>>
/* парсим level/pick из "L2_4" */
<<set _parts = _key.split("_")>>
<<set _lvl = parseInt(_parts[0].replace("L",""), 10)>>
<<set _pick = parseInt(_parts[1], 10)>>
<</if>>
<</if>>
/* ---------- normal pick (level-based) if NOT catch-up ---------- */
<<if not _useCatchUp>>
<<set _lastKey = $dualLast[_lvl]>>
<<set _pick = random(1,5)>>
<<set _key = "L" + _lvl + "_" + _pick>>
/* 6 попыток переролла без while */
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "L" + _lvl + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "L" + _lvl + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "L" + _lvl + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "L" + _lvl + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "L" + _lvl + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "L" + _lvl + "_" + _pick>><</if>>
<<set $dualLast[_lvl] = _key>>
<</if>>
/* ---------- mark as seen + unique counter ---------- */
<<if not $dualSeen[_key]>>
<<set $dualSeen[_key] = true>>
<<set $dualSeenCount += 1>>
<</if>>
/* ---------- check "all 15 events" achievement ---------- */
<<if $dualSeenCount >= 15 and not $dualAllRewarded>>
<<set $dualAllRewarded = true>>
/* поставь свой id ачивки */
<<if $achievements.achieve6>>
<<grantAch "achieve6">>
<</if>>
<</if>>
<</silently>>
/* ---------- EVENT CONTENT (single passage, 15 events) ---------- */
<<switch _lvl>>
<<case 1>>
<<switch _pick>>
<<case 1>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>A girl pops up. Cute. Brown hair. She smiles.<</st>>
<<rick>>Hey. Your profile pic looks cozy as fuck right now.<</rick>>
<<horny>>I am. Just chilling in bed.<</horny>>
<<rick>>Bet you look even better without that blanket.<</rick>>
<<horny>>Haha. Maybe.<</horny>>
<<rick>>Prove it. Send me a pic.<</rick>>
<<horny>>Fine. One.<</horny>>
@@.smaller;[img[gifs/30.gif]]@@
<<case 2>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>A blonde in a tank top. Low cut. You can see the top of her tits.<</st>>
<<rick>>Damn. That top was made for you.<</rick>>
<<horny>>You think?<</horny>>
<<rick>>Yeah. But I bet it'd look better on the floor.<</rick>>
<<horny>>You're bold.<</horny>>
<<rick>>Just honest. Send me something to remember you by.<</rick>>
<<horny>>Screenshot?<</horny>>
<<rick>>No. A real pic. Go on.<</rick>>
<<horny>>...Okay.<</horny>>
@@.smaller;[img[gifs/31.gif]]@@
<<case 3>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>A beauty. Athletic. She's drinking water, catching her breath.<</st>>
<<rick>>Just work out?<</rick>>
<<horny>>Yeah. Yoga. I'm sweaty as hell.<</horny>>
<<rick>>Sweaty looks good on you. Bet those leggings do too.<</rick>>
<<horny>>They're just leggings.<</horny>>
<<rick>>Bullshit. They're hugging every curve. Send me a pic. Let me see what I'm missing.<</rick>>
<<horny>>You're persistent.<</horny>>
<<rick>>And you're hot. Go on.<</rick>>
<<horny>>Fine. One pic.<</horny>>
@@.smaller;[img[gifs/32.gif]]@@
<<case 4>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>Brunette in a loose shirt. One strap keeps falling down her shoulder.<</st>>
<<rick>>Your shirt's fighting a losing battle.<</rick>>
<<horny>>Haha. It's old.<</horny>>
<<rick>>It's sexy as fuck. That shoulder looks lonely though.<</rick>>
<<horny>>Yeah?<</horny>>
<<rick>>Yeah. But I bet the rest of you looks even better. Send me a pic. Let me see.<</rick>>
<<horny>>I don't usually do that.<</horny>>
<<rick>>Just one. For me.<</rick>>
<<horny>>...Okay. Don't be weird about it.<</horny>>
@@.smaller;[img[gifs/33.gif]]@@
<<case 5>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>A girl with glasses. Nerdy vibe. Tight t-shirt.<</st>>
<<rick>>Glasses suit you.<</rick>>
<<horny>>Thanks. I'm blind without them.<</horny>>
<<rick>>Cute. But I'm more interested in what's under that shirt.<</rick>>
<<horny>>Whoa. Direct much?<</horny>>
<<rick>>Just saying what I'm thinking. You're hot. Send me a pic. Show me what you've got.<</rick>>
<<horny>>You don't waste time.<</horny>>
<<rick>>Life's short. And you're worth it.<</rick>>
<<horny>>Shit. Okay. Here.<</horny>>
@@.smaller;[img[gifs/34.gif]]@@
<</switch>>
<<case 2>>
<<switch _pick>>
<<case 1>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>A girl named "Luna23" messages you first.<</st>>
<<luna23>>hey :) bored af what are you doing<</luna23>>
<<rick>>Nothing. Just chilling. What are you wearing?<</rick>>
<<luna23>>mmm just a big t-shirt and some tiny shorts. no bra. feels so free lol<</luna23>>
<<rick>>Fuck, that's hot. Send me a pic?<</rick>>
<<luna23>>don't get too excited ;)<</luna23>>
@@.smaller;[img[gifs/35.gif]]@@
<<case 2>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You start a chat with "Mia_Sunset."<</st>>
<<rick>>Hey. What are you up to?<</rick>>
<<mia_sunset>>just got out of the shower. hair's all wet<</mia_sunset>>
<<rick>>Nice. What are you wearing?<</rick>>
<<mia_sunset>>literally just a towel. sitting on my bed. it's kinda slipping<</mia_sunset>>
<<rick>>Yeah? Let me see.<</rick>>
<<mia_sunset>>oops did i send too much?<</mia_sunset>>
@@.smaller;[img[gifs/36.gif]]@@
<<case 3>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You find "Jade_99" in a chat room.<</st>>
<<rick>>Hey. Bored?<</rick>>
<<jade_99>>so bored. just lying in bed can't sleep<</jade_99>>
<<rick>>Same. What are you wearing?<</rick>>
<<jade_99>>just panties lol. it's too hot for clothes<</jade_99>>
<<rick>>Fuck. Send proof.<</rick>>
<<jade_99>>better?<</jade_99>>
@@.smaller;[img[gifs/37.webp]]@@
<<case 4>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You message "Riley_C."<</st>>
<<rick>>Hey. What's up?<</rick>>
<<riley_c>>getting ready to go out. trying on outfits<</riley_c>>
<<rick>>Oh yeah? What are you wearing right now?<</rick>>
<<riley_c>>trying on this tiny dress. it's so short i'm not sure i can wear it out lol<</riley_c>>
<<rick>>Let me be the judge.<</rick>>
@@.smaller;[img[gifs/38.gif]]@@
<<case 5>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You get a message from "Violet_haze."<</st>>
<<violet_haze>>hey i saw you in the chat. you look interesting<</violet_haze>>
<<rick>>Thanks. What are you doing?<</rick>>
<<violet_haze>>just touching myself. bored and horny lol<</violet_haze>>
<<rick>>Fuck. What are you wearing?<</rick>>
<<violet_haze>>nothing. wanna see?<</violet_haze>>
@@.smaller;[img[gifs/39.webp]]@@
<</switch>>
<<case 3>>
<<switch _pick>>
<<case 1>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You message "SexySam."<</st>>
<<rick>>Hey. What are you doing?<</rick>>
<<sexysam>>Lying naked on my bed. Just touching myself.<</sexysam>>
<<rick>>Fuck. Where?<</rick>>
<<sexysam>>My pussy. I'm so wet right now. Wanna see?<</sexysam>>
@@.smaller;[img[gifs/40.webp]]@@
<<sexysam>>Don't just watch. Tell me what you'd do to me.<</sexysam>>
<<case 2>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You find "HornyHanna" in a chat room.<</st>>
<<hornyhanna>>Thank god you messaged. I'm so fucking bored.<</hornyhanna>>
<<rick>>Bored? Or horny?<</rick>>
<<hornyhanna>>Both. I'm naked in bed playing with my tits.<</hornyhanna>>
<<rick>>Prove it.<</rick>>
@@.smaller;[img[gifs/41.webp]]@@
<<case 3>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You message "WetGirl88."<</st>>
<<rick>>Hey. What's up?<</rick>>
<<wetgirl88>>Just got out of the shower. Still wet.<</wetgirl88>>
<<rick>>Still naked?<</rick>>
<<wetgirl88>>Yeah. Water dripping down my body. Wanna see?<</wetgirl88>>
@@.smaller;[img[gifs/42.webp]]@@
<<wetgirl88>>Wish you were here to dry me off.<</wetgirl88>>
<<case 4>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You get a message from "FreakyFiona."<</st>>
<<freakyfiona>>Hey. I'm so fucking horny right now.<</freakyfiona>>
<<rick>>Yeah? What are you doing?<</rick>>
<<freakyfiona>>Lying naked. My hand's between my legs. I've been touching myself for an hour.<</freakyfiona>>
<<rick>>Send me something.<</rick>>
@@.smaller;[img[gifs/43.webp]]@@
<<freakyfiona>>Fuck. I'm gonna cum. Talk to me. Tell me what to do.<</freakyfiona>>
<<case 5>>
<<st>>You open your laptop and log into Sxme.com<</st>>
<<st>>You find "NaughtyNina."<</st>>
<<rick>>Hey. What are you wearing?<</rick>>
<<naughtynina>>Nothing. Not a single thing.<</naughtynina>>
<<rick>>Fuck. What are you doing?<</rick>>
<<naughtynina>>Lying on my bed. Playing with my nipples. Pinching them. They're so hard.<</naughtynina>>
@@.smaller;[img[gifs/44.webp]]@@
<<naughtynina>>I wish your mouth was here instead of my fingers.<</naughtynina>>
<</switch>>
<</switch>>
<<button [[Leave|Bedroom_London]]>><</button>><<switch $gymLastKey>>
<<case "NOENERGY">>
<<st>>You step into the gym and instantly regret it.
No energy left.
Sleep, or eat something first.<</st>>
/* --- Tier 1 --- */
<<case "G1_1">>
<<st>>You're on the bench press. Mid-set. Girl walks past. Tight leggings. Her ass moves with every step. Round. Perfect. You lose focus. Bar almost drops. She glances back. Knows you're looking.<</st>>
<<case "G1_2">>
<<st>>You're on the treadmill. Bored. Girl on the mat doing stretches. Legs spread. Leaning forward. Her tits hang heavy in her tank top. She shifts. They bounce. Just a little. You almost trip on the treadmill.<</st>>
<<case "G1_3">>
<<st>>You're at the water fountain. Look up. Girl walking by. Tiny shorts. Her ass cheeks peek out the bottom. Jiggle with every step. She walks past again. Same route. On purpose.
You forget to drink.<</st>>
<<case "G1_4">>
<<st>>You're doing curls. Trying to focus. Girl on the leg press. Facing you. Tight sports bra. Her tits press together. Sweat runs between them. She presses. They bounce. She sees you watching. Smiles. Your form goes to shit.<</st>>
<<case "G1_5">>
<<st>>You're resting. Looking around. Girl on the hyperextension bench. Her ass is right there. Round. Perfect. Leggings pulled tight. She lowers. Comes up. Her glutes flex hard. You see the sweat in the crack. She looks back. Catches you. Smirks. Keeps going. You're hard in your shorts. Don't even care.<</st>>
/* --- Tier 2 --- */
<<case "G2_1">>
<<st>>You're on the leg press. She comes up to you.<</st>>
<<girl_gym>>Can you spot me? This weight is heavy.<</girl_gym>>
<<rick>>Sure.<</rick>>
<<st>>You follow her to the squat rack. She loads the bar. Starts squatting. You stand behind her. Hands ready.<</st>>
@@.smaller;[img[gifs/45.gif]]@@
<<st>>Third rep. She struggles. You grab her waist to help. Your hands on her hips. Skin under her tank top.<</st>>
<<st>>She looks back at you.<</st>>
<<girl_gym>>Don't let go.<</girl_gym>>
<<st>>She keeps going. Your hands slide down. Almost on her ass. She doesn't stop you.<</st>>
<<case "G2_2">>
<<st>>You're on the mat. Stretching after a set.<</st>>
<<st>>She's on the next mat. Doing the same. Both of you facing each other. Legs spread.<</st>>
@@.smaller;[img[gifs/46.gif]]@@
<<st>>She leans forward. Her shirt gapes. You see everything.<</st>>
<<st>>She looks up. Sees you looking.<</st>>
<<girl_gym>>Like what you see?<</girl_gym>>
<<rick>>Yeah.<</rick>>
<<case "G2_3">>
<<st>>You're at the lockers. Changing after your workout.<</st>>
<<st>>She walks in. Wrong locker room. Stops. Looks at you. Shirt off. Sweaty.<</st>>
@@.smaller;[img[gifs/47.gif]]@@
<<st>>She doesn't leave.<</st>>
<<girl_gym>>This isn't the women's locker room.<</girl_gym>>
<<rick>>I know.<</rick>>
<<st>>She walks closer. Looks at your body. Runs a finger down your chest.<</st>>
<<girl_gym>>I can see.<</girl_gym>>
<<st>>Her hand goes lower. Stops at your shorts.<</st>>
<<girl_gym>>Finish what you started out there.<</girl_gym>>
<<case "G2_4">>
<<st>>You're on the bench press. Last rep. Struggling. She appears above you. Grabs the bar. Helps you finish the set. You're breathing hard. She's still leaning over you. Her tits in your face.<</st>>
<<case "G2_5">>
<<st>>She's on the hyperextension bench. Doing reps. You're watching from behind. Not hiding it.<</st>>
@@.smaller;[img[gifs/48.gif]]@@
<<st>>She finishes. Stands up. Walks right to you.<</st>>
<<girl_gym>>You've been staring at my ass for twenty minutes.<</girl_gym>>
<<rick>>I know.<</rick>>
<<girl_gym>>Wanna do something about it?<</girl_gym>>
<<st>>She turns around. Bends over. Hands on her knees. Looks back at you over her shoulder.<</st>>
<<girl_gym>>Go ahead.<</girl_gym>>
<<st>>You step up behind her. Hands on her hips. Then on her ass. Squeezing. She pushes back against you.<</st>>
<<st>>Right there in the middle of the gym.<</st>>
/* --- Tier 3 --- */
<<case "G3_1">>
<<st>>You're in the shower. Water hot. Soap running down.<</st>>
<<st>>She walks in. Naked. Presses against you from behind.<</st>>
<<girl_gym>>Been watching you all workout. Couldn't wait anymore.<</girl_gym>>
<<st>>She turns you around. Drops to her knees. Takes your cock in her mouth. Deep. Water running over both of you. Looks up at you with those eyes while she sucks.<</st>>
@@.smaller;[img[gifs/49.webp]]@@
<<case "G3_2">>
<<st>>You're at the lockers. Towel around your waist.<</st>>
<<st>>She comes up behind you. Grabs your cock through the towel.<</st>>
<<girl_gym>>Follow me.<</girl_gym>>
<<st>>Family bathroom. Door locks. She pushes you against the wall. Drops to her knees. Takes you in her mouth right there. Slurping. Messy. Looks up.<</st>>
@@.smaller;[img[gifs/50.webp]]@@
<<girl_gym>>Wanted this since I saw you on the leg press.<</girl_gym>>
<<case "G3_3">>
<<st>>You're in the sauna after your workout. Eyes closed. Sweating. The door opens. She walks in. Naked under a small towel. She sits next to you. Close. Drops the towel. Neither of you say anything. Minutes pass. Her hand finds your thigh. Moves up. Finds you hard. She looks at you. You look at her. You pull her onto your lap. She straddles you. Lowers herself onto you. Slow. Quiet. Steam everywhere. Her forehead against yours. Breathing together. Moving slow so no one hears.<</st>>
@@.smaller;[img[gifs/51.webp]]@@
<<case "G3_4">>
<<st>>You're in the shower. Water running. Soaping up. She steps in behind you. Presses her tits against your back. Arms around your waist.<</st>>
<<girl_gym>>Been watching you all week.<</girl_gym>>
<<st>>She spins you around. Pushes you against the tile. Kneels down. Takes you in her mouth. Deep. Gagging. Looks up with those eyes.<</st>>
<<st>>You pull her up. Spin her around. Press her hands against the wall. Water running down her back. You slide into her from behind. Hard. Fast. Her moans echo off the tile.<</st>>
@@.smaller;[img[gifs/52.webp]]@@
<<case "G3_5">>
<<st>>You're on the bench in the locker room. Towel around your waist. She walks in. Wrong locker room. Doesn't leave. Walks right up to you. Drops the towel around your waist. Looks at your cock.<</st>>
<<girl_gym>>Fuck. All I thought about during my whole workout.<</girl_gym>>
<<st>>She drops to her knees. Takes you in her mouth. You stop her. Pull her up. Lay her back on the bench. Spread her legs. Kneel on the floor. Head between her thighs. You taste her. She grabs your hair. Hips moving. Trying to stay quiet.<</st>>
<<girl_gym>>Don't stop. Fucking don't stop.<</girl_gym>>
<<st>>She comes hard against your mouth. Pulls you up. Straddles you on the bench. Slides down onto you. Rides you until you both finish.<</st>>
@@.smaller;[img[gifs/53.webp]]@@
<<default>>
<<st>>You train. Sweat. Muscle burn. Same routine, different day.<</st>>
<</switch>>
<<link "Back to gym">><<goto "Gym_London">><</link>><<silently>>
/* ---------- init storages ---------- */
<<set $gymMode = $gymMode or "light">> /* "light" | "heavy" */
<<set $gymSeen = $gymSeen or {}>> /* { "G1_1":true, ... } */
<<set $gymSeenCount = $gymSeenCount or 0>> /* 0..15 */
<<set $gymLast = $gymLast or {}>> /* { 1:"G1_3", 2:"G2_1", 3:"G3_4" } */
<<set $gymLastAny = $gymLastAny or "">>
<<set $gymLastKey = $gymLastKey or "">>
<<set $gymFit100Rewarded = $gymFit100Rewarded or false>>
/* ---------- energy gate + pay + rewards (NO variables for costs) ---------- */
<<set _canTrain = true>>
<<if $gymMode is "heavy">>
<<set _canTrain = ($rick.energy >= 25)>>
<<if _canTrain>>
<<charAddStat $rick "energy" -25>>
<<charAddStat $rick "fit" 2>>
<<charAddStat $rick "exp" 2>>
<</if>>
<<else>>
<<set _canTrain = ($rick.energy >= 10)>>
<<if _canTrain>>
<<charAddStat $rick "energy" -10>>
<<charAddStat $rick "fit" 1>>
<<charAddStat $rick "exp" 1>>
<</if>>
<</if>>
/* ---------- no energy ---------- */
<<if not _canTrain>>
<<set $gymLastKey = "NOENERGY">>
<<else>>
/* ---------- achievement for 100 fit ---------- */
<<if $rick.fit >= 100 and not $gymFit100Rewarded>>
<<set $gymFit100Rewarded = true>>
<<grantAch "achieve10">>
<</if>>
/* ---------- tier by fit ---------- */
<<set _tier = 1>>
<<if $rick.fit >= 70>>
<<set _tier = 3>>
<<elseif $rick.fit >= 25>>
<<set _tier = 2>>
<<else>>
<<set _tier = 1>>
<</if>>
/* ---------- catch-up (tier 3, if not all 15 seen) ---------- */
<<set _pool = []>>
<<set _useCatchUp = false>>
<<if _tier is 3 and $gymSeenCount < 15>>
<<if not $gymSeen["G1_1"]>><<set _pool.push("G1_1")>><</if>>
<<if not $gymSeen["G1_2"]>><<set _pool.push("G1_2")>><</if>>
<<if not $gymSeen["G1_3"]>><<set _pool.push("G1_3")>><</if>>
<<if not $gymSeen["G1_4"]>><<set _pool.push("G1_4")>><</if>>
<<if not $gymSeen["G1_5"]>><<set _pool.push("G1_5")>><</if>>
<<if not $gymSeen["G2_1"]>><<set _pool.push("G2_1")>><</if>>
<<if not $gymSeen["G2_2"]>><<set _pool.push("G2_2")>><</if>>
<<if not $gymSeen["G2_3"]>><<set _pool.push("G2_3")>><</if>>
<<if not $gymSeen["G2_4"]>><<set _pool.push("G2_4")>><</if>>
<<if not $gymSeen["G2_5"]>><<set _pool.push("G2_5")>><</if>>
<<if not $gymSeen["G3_1"]>><<set _pool.push("G3_1")>><</if>>
<<if not $gymSeen["G3_2"]>><<set _pool.push("G3_2")>><</if>>
<<if not $gymSeen["G3_3"]>><<set _pool.push("G3_3")>><</if>>
<<if not $gymSeen["G3_4"]>><<set _pool.push("G3_4")>><</if>>
<<if not $gymSeen["G3_5"]>><<set _pool.push("G3_5")>><</if>>
<<if _pool.length > 0>>
<<set _useCatchUp = true>>
<</if>>
<</if>>
/* ---------- pick key ---------- */
<<set _key = "">>
<<if _useCatchUp>>
<<set _key = _pool[random(0, _pool.length - 1)]>>
/* anti-repeat catch-up */
<<if _key is $gymLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $gymLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $gymLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $gymLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $gymLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<if _key is $gymLastAny>><<set _key = _pool[random(0, _pool.length - 1)]>><</if>>
<<set $gymLastAny = _key>>
<<else>>
<<set _lastKey = $gymLast[_tier]>>
<<set _pick = random(1,5)>>
<<set _key = "G" + _tier + "_" + _pick>>
/* anti-repeat by tier */
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "G" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "G" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "G" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "G" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "G" + _tier + "_" + _pick>><</if>>
<<if _key is _lastKey>><<set _pick = random(1,5)>><<set _key = "G" + _tier + "_" + _pick>><</if>>
<<set $gymLast[_tier] = _key>>
<</if>>
/* ---------- mark seen + count unique ---------- */
<<if not $gymSeen[_key]>>
<<set $gymSeen[_key] = true>>
<<set $gymSeenCount += 1>>
<</if>>
<<set $gymLastKey = _key>>
<</if>>
<</silently>>
<<goto "GymEventText">><<silently>>
/* шанс 20% */
<<set _roll = random(1,100)>>
<<if _roll <= 20>>
/* куда вернуться после ивента */
<<set $cityReturn = passage()>>
<<goto "CityEvents">>
<</if>>
<</silently>><<set _cost = 100>>
<<if $rick.money < _cost>>
<<st>>You check your wallet. Yeah… no. You're short on cash.<</st>>
<<button [[Back|Alicia_House]]>><</button>>
<<else>>
<<charAddStat $rick "money" -100>>
<<set $ali.rel += 2>>
/* маленький шанс +1 cor если rel уже норм */
<<if $ali.rel >= 20 and random(1,100) <= 15>>
<<set $ali.cor += 1>>
<</if>>
<<st>>You hand her a small gift. She smiles. "Cute."<</st>>
<<button [[Back|Alicia_House]]>><</button>>
<</if>><<st>>Pick something from your backpack to give her.<</st>>
<<if $aliGiftScene and $aliGiftScene.trim() != "">>
<<renderWiki $aliGiftScene>>
<<set $aliGiftScene = "">>
<</if>>
<<print setup.gifts.renderGiveMenu()>>
<<button [[Back|Alicia_House]]>><</button>><<silently>>
<<set _relStage = Math.floor($ali.rel / 5)>>
<<set _corStage = Math.floor($ali.cor / 5)>>
<</silently>>
<<st>>What kind of talk?<</st>>
<<link "Small talk">>
<<set $aliTalkMode = "small">>
<<goto "Alicia_TalkRun">>
<</link>>
<<if _relStage >= 1>>
<br>
<<link "Deeper talk">>
<<set $aliTalkMode = "deep">>
<<goto "Alicia_TalkRun">>
<</link>>
<</if>>
<<if _relStage >= 3 and _corStage >= 2>>
<br>
<<link "Flirty talk (risky)">>
<<set $aliTalkMode = "flirt">>
<<goto "Alicia_TalkRun">>
<</link>>
<</if>>
<<if _relStage >= 5>>
<br>
<<link "Bold talk (pushy)">>
<<set $aliTalkMode = "bold">>
<<goto "Alicia_TalkRun">>
<</link>>
<</if>>
<br><br>
<<button [[Back|Alicia_House]]>><</button>><<silently>>
<<set _relStage = Math.floor($ali.rel / 5)>>
<<set _corStage = Math.floor($ali.cor / 5)>>
<<set $aliTalkMode = $aliTalkMode or "">>
<<set $aliTalkLast = $aliTalkLast or { small: 0, deep: 0, flirt: 0, bold: 0 }>>
<<set _mode = $aliTalkMode>>
<<set _max = 5>>
<<set _last = $aliTalkLast[_mode]>>
<<set _pick = random(1,_max)>>
/* anti-repeat (6 rerolls) */
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<set $aliTalkLast[_mode] = _pick>>
/* apply stat changes */
<<set _boldFail = false>>
<<if _mode is "small">>
<<set $ali.rel += 1>>
<<if _corStage >= 4 and random(1,100) <= 20>><<set $ali.cor += 1>><</if>>
<<elseif _mode is "deep">>
<<set $ali.rel += 2>>
<<if random(1,100) <= 25>><<set $ali.cor += 1>><</if>>
<<elseif _mode is "flirt">>
<<set $ali.rel += 1>>
<<set $ali.cor += 1>>
<<elseif _mode is "bold">>
<<if $ali.cor < 20>>
<<set $ali.rel -= 2>>
<<if $ali.rel < 0>><<set $ali.rel = 0>><</if>>
<<set _boldFail = true>>
<<else>>
<<set $ali.rel += 1>>
<<set $ali.cor += 2>>
<</if>>
<<else>>
/* если вдруг mode пустой/битый — назад */
<<goto "Alicia_TalkMenu">>
<</if>>
/* reset mode to avoid auto-replay */
<<set $aliTalkMode = "">>
<</silently>>
<<if _boldFail>>
<<st>>She narrows her eyes. "Too much."<</st>>
<<button [[Back|Alicia_House]]>><</button>>
<<else>>
<<switch _mode>>
<<case "small">>
<<switch _pick>>
<<case 1>>
<<rick>>Hey, stranger. How's your day going?<</rick>>
<<ali>>Honestly? Kind of exhausting. Work was a nightmare. But I'm free now, so that's something.<</ali>>
<<rick>>Sounds rough. Want to complain about it or forget about it?<</rick>>
<<ali>>Forget about it. Definitely. Just seeing you helps, actually.<</ali>>
<<case 2>>
<<rick>>What have you been up to today?<</rick>>
<<ali>>Slept way too late, ate some questionable leftovers, scrolled through my phone for like three hours. Productive stuff.<</ali>>
<<rick>>Living the dream.<</rick>>
<<case 3>>
<<rick>>You look a little tired. Everything okay?<</rick>>
<<ali>>Long day. Nothing serious, just one of those days where everything feels like work.<</ali>>
<<rick>>I get that. Want me to leave you alone or want some company?<</rick>>
<<ali>>No, stay. You're not work. You're actually the break.<</ali>>
<<case 4>>
<<rick>>I was just thinking about you. Wondering what you were doing.<</rick>>
<<ali>>Oh yeah? Good thoughts or bad thoughts?<</ali>>
<<rick>>Definitely good. Wondering if you were free tonight.<</rick>>
<<ali>>Maybe. Depends on what you have in mind.<</ali>>
<<case 5>>
<<rick>>What are you doing right now?<</rick>>
<<ali>>Nothing. Just lying in bed being bored. You?<</ali>>
<<rick>>Same. Bored and wishing I was with you.<</rick>>
<<ali>>Smooth. That might actually work on me.<</ali>>
<</switch>>
<<case "deep">>
<<switch _pick>>
<<case 1>>
<<rick>>Can I ask you something kind of random?<</rick>>
<<ali>>Sure. Go for it.<</ali>>
<<rick>>What's your favorite color? And don't say it depends on your mood. I want the real answer.<</rick>>
<<ali>>Fine. Green. Like deep forest green. It reminds me of camping when I was a kid. Happy times.<</ali>>
<<rick>>That's actually a really nice answer.<</rick>>
<<ali>>See? I have depth.<</ali>>
<<case 2>>
<<rick>>What's something about you that most people don't know?<</rick>>
<<ali>>Hmm. That's a good one. Okay, I cry at stupid stuff. Like commercials with dogs. Or those videos where soldiers come home and surprise their families. Every single time.<</ali>>
<<rick>>That's adorable.<</rick>>
<<ali>>Shut up. If you tell anyone, I'll deny it.<</ali>>
<<case 3>>
<<rick>>Be honest with me. Are you happy? Like, really happy?<</rick>>
<<ali>>Wow. Going deep right now.<</ali>>
<<rick>>We don't have to talk about it if you don't want to.<</rick>>
<<ali>>No, it's okay. Sometimes I am. Sometimes I'm not. Depends on the day. You?<</ali>>
<<rick>>Same. I think most people are like that.<</rick>>
<<ali>>Yeah. We're all just figuring it out.<</ali>>
<<case 4>>
<<rick>>What are you actually scared of? Not spiders or heights. Real stuff.<</rick>>
<<ali>>Being alone. Not like single alone. I mean really alone. Like no one who actually knows me. That terrifies me.<</ali>>
<<rick>>I know what you mean.<</rick>>
<<ali>>Yeah?<</ali>>
<<rick>>Yeah. That's why I like being with you. You make it feel less lonely.<</rick>>
<<ali>>That's sweet. Don't ruin it by being weird now.<</ali>>
<<case 5>>
<<rick>>If you could do anything with your life, no limits, what would it be?<</rick>>
<<ali>>Travel. Everywhere. Just pack a bag and go for like a year. See everything.<</ali>>
<<rick>>Alone or with someone?<</rick>>
<<ali>>With someone. It's better when you have someone to remember it with.<</ali>>
<<rick>>I'm available.<</rick>>
<<ali>>I know. That's why I'm telling you.<</ali>>
<</switch>>
<<case "flirt">>
<<switch _pick>>
<<case 1>>
<<rick>>You look really beautiful today. Like, I almost forgot what I was going to say when I saw you.<</rick>>
<<ali>>That's so cheesy. I love it. Keep going.<</ali>>
<<rick>>I'm serious. You have this way of just stopping me in my tracks.<</rick>>
<<ali>>Good. That's exactly what I'm going for.<</ali>>
<<case 2>>
<<rick>>I keep trying to focus on what I'm supposed to be doing, but I can't stop looking at you.<</rick>>
<<ali>>Poor thing. Must be so hard having someone this attractive around.<</ali>>
<<rick>>It's a real struggle. I might need compensation.<</rick>>
<<ali>>Oh yeah? What kind of compensation were you thinking?<</ali>>
<<case 3>>
<<rick>>You know you're dangerous, right?<</rick>>
<<ali>>Me? I'm an angel.<</ali>>
<<rick>>Bullshit. One smile from you and I forget how to talk. That's dangerous.<</rick>>
<<ali>>Good. I like having that effect on you. Makes me feel powerful.<</ali>>
<<rick>>You should. You totally are.<</rick>>
<<case 4>>
<<rick>>I swear you get more attractive every time I see you. How is that even possible?<</rick>>
<<ali>>Genetics. Hard work. Also I just woke up like this.<</ali>>
<<rick>>Well, whatever it is, it's working. I'm completely distracted.<</rick>>
<<ali>>Good. Stay distracted. I like your full attention.<</ali>>
<<case 5>>
<<rick>>Do you have any idea what you do to me?<</rick>>
<<ali>>Tell me. I want to hear it.<</ali>>
<<rick>>You make me want to forget about everything else. Just be with you. Talk to you. Look at you.<</rick>>
<<ali>>That's really sweet. And also really hot coming from you.<</ali>>
<<rick>>Just being honest.<</rick>>
<<ali>>Keep being honest. I like it.<</ali>>
<</switch>>
<<case "bold">>
<<switch _pick>>
<<case 1>>
<<rick>>I had a dream about you last night. A really fucking good one.<</rick>>
<<ali>>Oh yeah? Tell me what happened.<</ali>>
<<rick>>You were on your knees. Right in front of me. Looking up with those eyes while your mouth was busy.<</rick>>
<<ali>>Fuck. That's hot. And then what?<</ali>>
<<rick>>Then I woke up with a hard-on and you weren't there. Disappointing as hell.<</rick>>
<<ali>>Next time don't wake up. Keep dreaming. Or better yet, make it happen for real.<</ali>>
<<case 2>>
<<rick>>That dress you're wearing is doing something to me.<</rick>>
<<ali>>What kind of something?<</ali>>
<<rick>>The kind where I want to bend you over the nearest surface and fuck you until you forget your own name.<</rick>>
<<ali>>Jesus. That specific?<</ali>>
<<rick>>That specific. I'm hard just looking at you.<</rick>>
<<ali>>Good. Keep dreaming.<</ali>>
<<case 3>>
<<rick>>I can't stop thinking about you. All of you. Every part.<</rick>>
<<ali>>Every part? Like what?<</ali>>
<<rick>>Like the way you moan when I hit that spot inside you. The way your back arches when you're about to come. The way you feel when you're squeezing around me.<</rick>>
<<ali>>Fuck. You're making me wet just talking like that.<</ali>>
<<rick>>Good. That's exactly what I wanted.<</rick>>
<<case 4>>
<<rick>>You're so fucking sexy it's actually annoying.<</rick>>
<<ali>>Annoying? How?<</ali>>
<<rick>>Because I'm sitting here trying to have a conversation and all I can think about is eating your pussy until you scream.<</rick>>
<<ali>>Damn. So what's stopping you?<</ali>>
<<rick>>This table. These people. This whole situation.<</rick>>
<<ali>>Then we’ll need to plan a date.<</ali>>
<<case 5>>
<<rick>>I've been thinking all day about what I want to do to you tonight.<</rick>>
<<ali>>Tell me. I want to hear every detail.<</ali>>
<<rick>>I want to pin you against the wall. Pull your hair back. Fuck you from behind so hard you can't stand after.<</rick>>
<<ali>>Fuck. That's what you've been thinking about all day?<</ali>>
<<rick>>Among other things. Want me to keep going or just show you?<</rick>>
<<ali>>Show me on our next date.<</ali>>
<</switch>>
<</switch>>
<br><br>
<<button [[Back|Alicia_House]]>><</button>>
<</if>><<silently>>
<<set _date1Ready = ($ali.rel >= 10 and not $aliDates.q1.started)>>
<<set _date2Ready = ($ali.rel >= 20 and $aliDates.q1.done and not $aliDates.q2.started)>>
<<if _date2Ready>>
<<set $aliDates.q2.started = true>>
<<elseif _date1Ready>>
<<set $aliDates.q1.started = true>>
<</if>>
/* safety init */
<<set $aliVisitsToday = $aliVisitsToday or 0>>
<<set $aliVisitLimitToday = $aliVisitLimitToday or random(2,3)>>
<<set $aliLastVisitAngry = $aliLastVisitAngry or false>>
<<set $aliGiftMsg = $aliGiftMsg or "">>
<<set _visitCost = 10>>
<<set _canVisit = ($rick.energy >= _visitCost)>>
<<if not _canVisit>>
<<set $aliEnterResult = "NOENERGY">>
<<else>>
/* визит + энергия списываются ТОЛЬКО тут */
<<set $aliVisitsToday += 1>>
<<charAddStat $rick "energy" -10>>
/* проверяем лимит */
<<if $aliVisitsToday > $aliVisitLimitToday>>
<<set $aliEnterResult = "OVERLIMIT">>
<<set $aliLastVisitAngry = true>>
/* штраф за навязчивость */
<<set $ali.rel -= 2>>
<<if $ali.rel < 0>><<set $ali.rel = 0>><</if>>
/* если кор низкий — закрывается */
<<if $ali.cor < 20>>
<<set $ali.cor -= 1>>
<<if $ali.cor < 0>><<set $ali.cor = 0>><</if>>
<</if>>
<<else>>
<<set $aliEnterResult = "OK">>
<<set $aliLastVisitAngry = false>>
<</if>>
<</if>>
<</silently>>
<<if $aliEnterResult is "NOENERGY">>
<<st>>You’re too fucking drained to go see her.
Sleep first, or grab a snack.<</st>>
<<button [[Leave|City_1]]>><</button>>
<<elseif $aliEnterResult is "OVERLIMIT">>
<<goto "Alicia_House_OverLimit">>
<<else>>
<<goto "Alicia_House">>
<</if>><<st>>You show up again.<</st>>
<<st>>She opens the door and looks annoyed.<</st>>
<<ali>>Seriously? Again today? Not happening.<</ali>>
<<button [[Leave|City_1]]>><</button>><<set $rick.progress_city_1+=5>><<st>>You're sitting at home when your phone buzzes. That phone. The weird one.<</st>>
<<sms "Unknown">>Hey. Want to visit Brazil again? Sex with Alisia is your ticket.<</sms>>
<<st>>You stare at the message for a second. This is fucked up. Everything about this is fucked up.<</st>>
<<st>>But you were actually there. In Brazil. After you fucked Alisia. That really happened. And Alisia's hot. Really hot. Who says no to more of that? Problem is she probably won't just jump into bed again. Gotta put in the work.<</st>>
<<st>>You text her. Ask her on a date.<</st>>
<span id='options1'>
<<link 'Go to the zoo'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<st>>You meet Alisia outside her place. She's already smiling, eyes curious.<</st>>
<<ali>>Are we really going to the zoo?<</ali>>
<<rick>>Yeah, I thought it might be fun.<</rick>>
<<st>>Her eyes go wide. She gasps like you just gave her diamonds.<</st>>
<<ali>>Oh my god. How did you know I love animals?<</ali>>
<<st>>You pull up to the zoo. Stop at the petting zoo area. Place a baby goat in her hands. Soft and fluffy.<</st>>
<<st>>She cradles that goat like it's her actual child.<</st>>
@@.smaller;[img[gifs/69.gif]]@@
<<rick>>Just had a feeling. Good guess.<</rick>>
<<st>>The tour begins. And really soon it turns into your personal hell.<</st>>
<<st>>She pets a llama. Coos at the penguins. Spends five minutes staring at some monkeys like they're philosophers. You realize this girl’s a bit weird. What’s up with her and animals? She talks nonstop.<</st>>
@@.smaller;[img[gifs/70.gif]]@@
<<st>>You fake interest. Nod at appropriate times. Smile when she looks at you.<</st>>
<<ali>>Look at the zebras! They're like horses but with pajamas.<</ali>>
<<rick>>Yeah. Really cool.<</rick>>
<<st>>You're dying inside but whatever. She's happy.<</st>>
<<st>>She stops in front of the camels. Staring at them with actual admiration.<</st>>
<<ali>>They're so resilient. I really admire that about them.<</ali>>
<<rick>>If we were in Egypt or something, I'd trade like twenty camels for you. Easy.<</rick>>
<<st>>She freezes. Stares at you like you're insane.<</st>>
<<st>>Then she bursts out laughing. Thank fuck.<</st>>
<<st>>You grab a carrot to feed a camel. Show off your animal skills.<</st>>
<<rick>>See? I'm good with<</rick>>
<<st>>The camel spits right in your face. Thick. Green. Warm. Alisia gasps. Then doubles over laughing. Almost crying. You wipe your face. And yeah. It's pretty funny. You laugh too.<</st>>
@@.smaller;[img[gifs/71.gif]]@@
<<st>>Back at her place. She lets you use the shower to clean up. You come out with a towel around your waist. She's on the couch flipping channels.<</st>>
<<ali>>Want to watch something on Animal Planet?<</ali>>
<<rick>>Seriously?<</rick>>
<<st>>She grins. You sit down next to her.<</st>>
<<st>>Some show about lions. You're half watching. Half thinking how the hell you got here. Then she leans into you. Head on your shoulder. You turn. She looks up. Eyes soft. Teasing. You kiss her.<</st>>
@@.smaller;[img[gifs/72.gif]]@@
<<st>>She pulls back smiling.<</st>>
<<rick>>What? I earned it after that camel incident.<</rick>>
<<st>>She shoves you. Laughs. Settles back against you. Her hand in yours.<</st>>
<<sms "Unknown">>Okay. Maybe the zoo wasn't that bad, but it looks like you still have to work hard to get into those panties.<</sms>>
<<button [[Leave|City_1]]>><</button>>
<</append>><</link>>
<<link 'Go to the new Ice Cream Place'>>
<<replace '#options1'>><</replace>>
<<append '#options1'>><<st>>You meet Alisia outside her place. She's already grinning, eyes curious.<</st>>
<<ali>>So where are we going? You look way too pleased with yourself.<</ali>>
<<rick>>It's a surprise. Close your eyes.<</rick>>
<<st>>She raises an eyebrow but plays along. You tie the blindfold. Lead her to the car. Too easy.<</st>>
<<st>>Your phone buzzes.<</st>>
<<sms "Unknown">>Blindfolds on the first date? Smooth. Or creepy. Depends on her.<</sms>>
<<st>>You ignore it.<</st>>
<<st>>You pull up to an ice cream café. Guide her inside. Sit her down. The server brings two massive sundaes. Your romantic masterpiece.<</st>>
<<st>>You put a spoon in her hand. Guide it to the ice cream.<</st>>
<<rick>>Okay, try this.<</rick>>
<<st>>She takes a bite. Face lights up. Then... it fades. She pulls off the blindfold herself. Stares at the mountain of ice cream. Then at you.<</st>>
<<ali>>You... got me ice cream?<</ali>>
<<rick>>Yeah. What's wrong? You don't like it?<</rick>>
<<st>>Her face goes red. Bright red. She stands up fast.<</st>>
<<ali>>I... I need to go home.<</ali>>
<<st>>She grabs her bag. Runs out like the place is on fire. You sit there. Spoon in hand. What the fuck just happened? You pay for both sundaes. Huge waste. You go home confused.<</st>>
<<st>>Your phone buzzes.<</st>>
<<sms "Unknown">>Bro. Ice cream? Really? You couldn't have picked something less... tragic?<</sms>>
<<rick>>What does that mean?<</rick>>
<<sms "Unknown">>No spoilers. Figure it out yourself.<</sms>>
<<st>>Great. Helpful as always.<</st>>
<<st>>Next day you decide to text her.<</st>>
<<rick>>Hey. Sorry about yesterday. No idea what went wrong but I want to make it up to you. No surprises. Promise. How about the zoo? They got baby raccoons. You can hold them.<</rick>>
<<st>>A few minutes later you get an aswer.<</st>>
<<ali>>Yeah. I'd love that. And sorry for running off. I... remembered I left the iron on at home.<</ali>>
<<linkreplace "Go to the zoo">><<st>>You meet Alisia outside her place. She's already smiling, eyes curious.<</st>>
<<ali>>Are we really going to the zoo?<</ali>>
<<rick>>Yeah, I thought it might be fun.<</rick>>
<<st>>Her eyes go wide. She gasps like you just gave her diamonds.<</st>>
<<ali>>Oh my god. How did you know I love animals?<</ali>>
<<st>>You pull up to the zoo. Stop at the petting zoo area. Place a baby goat in her hands. Soft and fluffy.<</st>>
<<st>>She cradles that goat like it's her actual child.<</st>>
@@.smaller;[img[gifs/69.gif]]@@
<<rick>>Just had a feeling. Good guess.<</rick>>
<<st>>The tour begins. And really soon it turns into your personal hell.<</st>>
<<st>>She pets a llama. Coos at the penguins. Spends five minutes staring at some monkeys like they're philosophers. You realize this girl’s a bit weird. What’s up with her and animals? She talks nonstop.<</st>>
@@.smaller;[img[gifs/70.gif]]@@
<<st>>You fake interest. Nod at appropriate times. Smile when she looks at you.<</st>>
<<ali>>Look at the zebras! They're like horses but with pajamas.<</ali>>
<<rick>>Yeah. Really cool.<</rick>>
<<st>>You're dying inside but whatever. She's happy.<</st>>
<<st>>She stops in front of the camels. Staring at them with actual admiration.<</st>>
<<ali>>They're so resilient. I really admire that about them.<</ali>>
<<rick>>If we were in Egypt or something, I'd trade like twenty camels for you. Easy.<</rick>>
<<st>>She freezes. Stares at you like you're insane.<</st>>
<<st>>Then she bursts out laughing. Thank fuck.<</st>>
<<st>>You grab a carrot to feed a camel. Show off your animal skills.<</st>>
<<rick>>See? I'm good with<</rick>>
<<st>>The camel spits right in your face. Thick. Green. Warm. Alisia gasps. Then doubles over laughing. Almost crying. You wipe your face. And yeah. It's pretty funny. You laugh too.<</st>>
@@.smaller;[img[gifs/71.gif]]@@
<<st>>Back at her place. She lets you use the shower to clean up. You come out with a towel around your waist. She's on the couch flipping channels.<</st>>
<<ali>>Want to watch something on Animal Planet?<</ali>>
<<rick>>Seriously?<</rick>>
<<st>>She grins. You sit down next to her.<</st>>
<<st>>Some show about lions. You're half watching. Half thinking how the hell you got here. Then she leans into you. Head on your shoulder. You turn. She looks up. Eyes soft. Teasing. You kiss her.<</st>>
@@.smaller;[img[gifs/72.gif]]@@
<<st>>She pulls back smiling.<</st>>
<<rick>>What? I earned it after that camel incident.<</rick>>
<<st>>She shoves you. Laughs. Settles back against you. Her hand in yours.<</st>>
<<sms "Unknown">>Okay. Maybe the zoo wasn't that bad, but it looks like you still have to work hard to get into those panties.<</sms>>
<<button [[Leave|City_1]]>><</button>><</linkreplace>>
<</append>><</link>>
</span><<st>>You pick Alisia up at seven. She looks fucking incredible. Little black dress. Hair done. Smell that makes you want to bury your face in her neck forever.<</st>>
<<rick>>Wow. Just... wow.<</rick>>
<<ali>>I know. You clean up okay too.<</ali>>
<<st>>She grins. Takes your arm. You feel like a king walking her to the car.<</st>>
<<st>>Nice restaurant. Not too fancy. Just enough. Candles on the table. Wine. The works. You're sitting across from her. She's laughing at something you said. Or maybe at you. Hard to tell.<</st>>
@@.smaller;[img[gifs/73.gif]]@@
<<ali>>So tell me something embarrassing. I need ammunition.<</ali>>
<<rick>>Ammunition for what?<</rick>>
<<ali>>For later. When I need to win an argument. Duh.<</ali>>
<<st>>You think for a second.<</st>>
<<rick>>Okay. When I was like fifteen, I tried to impress a girl by doing a backflip off a dock. Into like two feet of water.<</rick>>
<<ali>>Oh no.<</ali>>
<<rick>>Oh yes. Smacked my face so hard on the bottom I lost a tooth. Girl laughed at me for a week. Never spoke to her again.<</rick>>
<<st>>Alisia loses it. Head back. Full laugh. Other people look.<</st>>
<<ali>>That's amazing. Okay my turn. First time I tried to give a guy a hickey, I didn't know what I was doing. Just sucked on his neck for like five minutes straight. He had a massive purple bruise for two weeks. Looked like I beat him up.<</ali>>
<<rick>>Jesus Christ.<</rick>>
<<ali>>He told people I attacked him. I was fifteen.<</ali>>
<<st>>You're both laughing now. Wine helps.<</st>>
@@.smaller;[img[gifs/74.gif]]@@
<<st>>Dinner flies by. More stories. More wine. Her foot touches your leg under the table. Stays there.<</st>>
<<st>>Your phone buzzes. Stupid phone.<</st>>
<<sms "Unknown">>Stop staring at her tits and listen to her stories. Rude.<</sms>>
<<st>>You glance up. She caught you looking.<</st>>
<<ali>>Was that the phone?<</ali>>
<<rick>>Yeah.<</rick>>
<<ali>>What'd it say?<</ali>>
<<rick>>Nothing. Just... encouraging me.<</rick>>
<<st>>She smirks.<</st>>
<<button [[Get the Check|Alicia_Date_2_1]]>><</button>><<set $rick.progress_city_1+=5>><<st>>Finally, you walk her to her door. Night air. Quiet street. She's close. Smells like heaven.<</st>>
<<rick>>I had a really good time tonight.<</rick>>
<<ali>>Me too. Even with the embarrassing stories.<</ali>>
<<rick>>Especially the embarrassing stories.<</rick>>
<<st>>She laughs. Looks at you. Eyes dark. Wanting.<</st>>
<<ali>>You wanna come in?<</ali>>
<<rick>>Yeah. I really do.<</rick>>
<<st>>The door closes. You're on her immediately. She's on you. Kissing. Hands everywhere.<</st>>
@@.smaller;[img[gifs/75.gif]]@@
<<rick>>God I've wanted you all night. Couldn't stop looking at you.<</rick>>
<<ali>>I know. I saw.<</ali>>
<<st>>You pull her dress down. Off. She's in lace. Black. Perfect.<</st>>
<<rick>>Fuck, Alisia.<</rick>>
<<st>>She pushes you onto the bed. Climbs on top. You undo your pants. She's already wet. She sinks down onto you. Both of you moan.<</st>>
<<st>>She rides you. Hard. Fast. Then slow. Then hard again. Her nails in your chest. Your hands on her hips. Her tits bouncing.<</st>>
@@.smaller;[img[gifs/76.webp]]@@
<<ali>>Don't stop. Don't you fucking stop.<</ali>>
<<st>>You don't.<</st>>
<<st>>She comes first. Loud. Body shaking. Then you do. Pull her down. Hold her tight. Both breathing like you ran a marathon.<</st>>
<<st>>You're lying there. Her on your chest. Eyes closed. Both sweating. You close your eyes too. Just for a second.<</st>>
<<st>>You open them.<</st>>
<<st>>and BOOM!<</st>>
<<button [[What the fu...|City_2_Intro]]>><</button>><<st>>Sun. Heat. You sit up. Look around. Palm trees. Bright blue sky. Brazil. You're in Brazil again. Your phone buzzes.<</st>>
<<sms "Unknown">>Told you. Sex with Alisia = ticket. Welcome back, traveler.<</sms>>
<<st>>Current Status
At the moment, the Brazil location is in development.
Stay tuned for updates! 🚀<</st>>
<<button [[Return to London|City_1]]>><</button>><<silently>>
/* ----- pick tier chance by fit + lvl ----- */
/* Tier2 шанс: растёт от fit/lvl, но кап 85% */
<<set _score = Math.floor(($rick.fit * 0.8) + ($rick.lvl * 4))>>
<<if _score < 0>><<set _score = 0>><</if>>
<<if _score > 85>><<set _score = 85>><</if>>
<<set _tier = 1>>
<<if random(1,100) <= _score>>
<<set _tier = 2>>
<</if>>
/* ----- pick event with anti-repeat (1..5) ----- */
<<set _max = 5>>
<<set _last = $cleanLast[_tier]>>
<<set _pick = random(1,_max)>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<if _pick is _last>><<set _pick = random(1,_max)>><</if>>
<<set $cleanLast[_tier] = _pick>>
<<set _key = "CL" + _tier + "_" + _pick>>
/* mark seen */
<<set $cleanSeen[_key] = true>>
/* ----- LOOT (NOT ALWAYS!) ----- */
<<set $cleanLootId = "">>
<<set $cleanLootName = "">>
/* drop chance */
<<set _dropChance = 0>>
<<if _tier is 1>>
/* Tier1: 20% лут */
<<set _dropChance = 20>>
<<else>>
/* Tier2: 35% + рост от статов, кап 65% */
<<set _dropChance = 35 + Math.floor(($rick.fit / 20) + ($rick.lvl * 1.5))>>
<<if _dropChance > 65>><<set _dropChance = 65>><</if>>
<</if>>
<<if random(1,100) <= _dropChance>>
<<run (function(){
const tier = State.variables._tier; // _tier из пассажа доступен
const id = setup.cleaning.rollLootId(tier);
State.variables.cleanLootId = id || "";
State.variables.cleanLootName = id ? setup.itemsMeta.get(id).name : "";
})()>>
<<if $cleanLootId>>
<<pickup $backpack $cleanLootId 1>>
<</if>>
<</if>>
<</silently>>
/* ===== TEXTS ===== */
<<if _tier is 1>>
<<switch _pick>>
<<case 1>>
<<st>>Your place is getting messy. Time to clean up.
You grab a trash bag and start throwing shit out. Old receipts. Empty bottles. Random wrappers.
An hour later the place looks decent. Not perfect but way better. You feel accomplished.<</st>>
@@.smaller;[img[img/living/4.webp]]@@
<<case 2>>
<<st>>Dust everywhere. You grab a cloth and start wiping shit down.
Tables. Shelves. TV stand. Even the windowsills.
When you're done the whole room actually shines a little. Nice.<</st>>
@@.smaller;[img[img/living/5.jpg]]@@
<<case 3>>
<<st>>Floor's covered in random crap. Clothes. Papers. Empty cups.
You spend twenty minutes just picking shit up and putting it where it belongs.
Simple job but satisfying. Place looks like a human lives here now.<</st>>
@@.smaller;[img[img/living/8.jpg]]@@
<<case 4>>
<<st>>You vacuum the whole living room. Even move the couch to get underneath.
Found some change. Like two bucks. And a lighter you thought you lost.
Cleaning pays for itself sometimes.<</st>>
@@.smaller;[img[img/living/2.jpg]]@@
<<case 5>>
<<st>>Deep clean today. You go through every drawer. Every shelf. Organize shit.
Found old photos. Random receipts. A condom wrapper from who knows when.
Place looks brand new when you're done. Tired as fuck but worth it.<</st>>
@@.smaller;[img[img/living/6.jpg]]@@
<</switch>>
<<else>>
<<switch _pick>>
<<case 1>>
<<st>>You're moving the couch to vacuum underneath. Something crinkles.
You reach down and find a magazine. Old. Folded open to some naked girls.
You laugh. Forgot you had this. Flip through it for old times sake. Then trash it. Probably.<</st>>
@@.smaller;[img[img/living/3.jpg]]@@
<<case 2>>
<<st>>Under the cushion you find a sock. Stiff. Crusty. You know exactly what that is.
You hold it up and just stare for a second. Gross. But also kinda funny.
What do you even do with this. Throw it away. Probably.<</st>>
@@.smaller;[img[img/living/9.jpg]]@@
<<case 3>>
<<st>>Cleaning behind the TV stand. Find a vibrator. Small. Pink. Definitely not yours.
You have no idea who left it or when. Guess some night got wild and you don't remember.
You turn it on. Still works. Huh.<</st>>
@@.smaller;[img[img/living/10.jpg]]@@
<<case 4>>
<<st>>Dusting the bookshelf. A photo falls out from between two books.
It's you and some girl. Can't even remember her name. Both of you drunk at a party. She's sitting on your lap.
You stare at it for a minute. Wonder where she is now. Then toss it in the trash.<</st>>
@@.smaller;[img[img/living/7.jpg]]@@
<<case 5>>
<<st>>You're sorting through old mail and papers. One envelope is thicker.
Open it. Old photos from some night. Polaroids. You and a girl. Then just her. Naked. Spreading for the camera.
Damn. That was a good night. You forgot about her. You smile. Then put them somewhere safe. Not trash.<</st>>
@@.smaller;[img[img/living/1.jpg]]@@<</switch>><</if>><<if $cleanLootId>><<st>>You found: $cleanLootName<</st>>
<<else>><<st>>You found nothing this time.<</st>><</if>>
<br>
<<button [[Back|House_London]]>><</button>><<silently>>
<<set _int = $rick.int>>
<<set _lvl = $rick.lvl>>
/* Курсы: откроем на int>=20 и lvl>=5 */
<<set _coursesUnlocked = (_int >= 20 and _lvl >= 5)>>
<</silently>>
<<st>>Library. Quiet. Smells like paper and dust. You can actually focus here.<</st>>
<<link "Read Books">>
<<goto "Library_ReadBooks">>
<</link>>
<<if _coursesUnlocked>>
<<link "Courses">>
<<goto "Library_Courses">>
<</link>>
<<else>>
<div class="cheat-hint">Courses (locked)
Need Brain 20+ and LVL 5+</div>
<</if>>
<<button [[Leave|City_1]]>><</button>><<silently>>
/* anti-repeat for book texts */
<<set _last = $libLast.book>>
<<set _pick = random(1,5)>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<set $libLast.book = _pick>>
/* event chance */
<<set _event = (random(1,100) <= 30)>>
<</silently>>
<<switch _pick>>
<<case 1>>
<<st>>You grab a book from the shelf. Something about psychology. How people think. Interesting actually. You find a quiet corner and read for an hour. Feel a little smarter. Brain feels tired though.<</st>>
<<case 2>>
<<st>>Picked up a history book. Old wars. Dead kings. Boring at first but then it gets wild. Some crazy shit happened back then. You read until your eyes hurt. Close the book. History's kinda cool actually.<</st>>
<<case 3>>
<<st>>Found a book about investing. Money stuff. Boring but useful. You force yourself through a few chapters. Now you know what a stock is. Sort of. Baby steps.<</st>>
<<case 4>>
<<st>>Self-help book. How to be more confident. Sounds cheesy but whatever. You read a chapter. Some of it's actually good advice. Might try some of it. Might not.<</st>>
<<case 5>>
<<st>>Science book. Space. Black holes. All that. Mind-blowing stuff. Makes you feel tiny. You read until you can't focus anymore. Head hurts but in a good way.<</st>>
<</switch>><<set _filetype to either('.gif')>>[img[String.format('img/library/' + random(1, 6) + _filetype)]]
<<charAddStat "rick" "int" 1>>
<<charAddStat "rick" "exp" 1>>
<<charAddStat "rick" "energy" -5>>
<<if _event>>
<<goto "Library_Event">>
<<else>>
<br>
<<button [[Back|Library_Menu]]>><</button>>
<</if>><<silently>>
/* anti-repeat for course texts */
<<set _last = $libLast.course>>
<<set _pick = random(1,5)>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<set $libLast.course = _pick>>
/* event chance */
<<set _event = (random(1,100) <= 30)>>
<</silently>>
<<switch _pick>>
<<case 1>>
<<st>>You paid for an online course. Basic stuff. Learning at your own pace. A few hours later you actually know some new things. Worth it.<</st>>
<<case 2>>
<<st>>The course is harder than you thought. Lots of information. You take notes. Focus. By the end you feel like you actually learned something real.<</st>>
<<case 3>>
<<st>>You're the only one in the library computer lab today. Course material is interesting. Time flies. You finish two modules without even noticing.<</st>>
<<case 4>>
<<st>>This course requires actual work. Homework and shit. Like school. But you push through. Knowledge is power or whatever.<</st>>
<<case 5>>
<<st>>Final module done. You close the laptop and stretch. Actually proud of yourself. Learning shit feels good sometimes.<</st>>
<</switch>><<set _filetype to either('.gif')>>[img[String.format('img/library/' + random(7, 10) + _filetype)]]
<<charAddStat "rick" "int" 2>>
<<charAddStat "rick" "exp" 2>>
<<charAddStat "rick" "energy" -10>>
<<if _event>>
<<goto "Library_Event">>
<<else>>
<br>
<<button [[Back|Library_Menu]]>><</button>>
<</if>><<silently>>
<<set _score = ($rick.int * 1) + ($rick.lvl * 3)>>
<<set _tier = 1>>
<<if _score >= 80>>
<<set _tier = 3>>
<<elseif _score >= 40>>
<<set _tier = 2>>
<</if>>
/* anti-repeat per tier */
<<set _last = $libEventLast[_tier]>>
<<set _pick = random(1,5)>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<set $libEventLast[_tier] = _pick>>
<<set $libEventRoll.tier = _tier>>
<<set $libEventRoll.pick = _pick>>
<</silently>>
<<switch $libEventRoll.tier>>
<<case 1>>
<<switch $libEventRoll.pick>>
<<case 1>>
<<st>>You're browsing the shelves when a girl walks past. Short skirt. Long legs. She bends down to grab a book from the bottom shelf. Skirt rides up. You see the back of her thighs. Smooth. She stands up, catches you looking, and just smiles. Walks away slow.<</st>>
@@.smaller;[img[img/library/15.webp]]@@
<<case 2>>
<<st>>Quiet section. You're reading. Girl at the table across from you. Stretches her arms above her head. Her shirt lifts. You see her stomach. A little piercings in her belly button. She doesn't notice. Goes back to reading. You go back to staring.<</st>>
@@.smaller;[img[img/library/14.gif]]@@
<<case 3>>
<<st>>Walking through the aisles. Girl standing on tiptoes trying to reach a high shelf. Her jeans stretch tight across her ass. Perfect round shape. She struggles for a second then gives up. Walks away. You watch the whole thing.<</st>>
@@.smaller;[img[img/library/13.gif]]@@
<<case 4>>
<<st>>You're sitting in a corner reading. Girl at the next table crosses her legs. Her foot slips out of her shoe. Bare foot. Toes painted red. She wiggles them while reading. Distracting as fuck.<</st>>
@@.smaller;[img[img/library/17.webp]]@@
<<case 5>>
<<st>>Girl at the counter checking out books. Tight dress. When she leans forward to grab her stack, the fabric pulls tight. You see the outline of her thong under the thin material. She turns around. Catches you. Smirks and walks off.<</st>>
@@.smaller;[img[img/library/16.webp]]@@
<</switch>>
<<case 2>>
<<switch $libEventRoll.pick>>
<<case 1>>
<<st>>You're in the stacks looking for a book. Turn a corner and almost bump into her. Young. Cute. She's holding a book against her chest. Drops it. Bends to pick it up. Her shirt gapes. You see her tits. No bra. Just nipples and skin.<</st>>
<<st>>She stands up slow. Sees you looking.<</st>>
@@.smaller;[img[img/library/11.gif]]@@
<<girl_library>>Like what you see?<</girl_library>>
<<st>>You don't answer. She walks away smiling.<</st>>
<<case 2>>
<<st>>Quiet study room. Glass walls. She's alone inside. Stretching. Reaches down to touch her toes. Legs straight. Her shorts ride up. You see the bottom of her ass cheeks. Bare skin. She holds the stretch. Looks right at you through the glass. Holds your eyes. Then slowly stands up.<</st>>
@@.smaller;[img[img/library/14.gif]]@@
<<case 3>>
<<st>>You're at a table reading. She sits down across from you. Nothing special at first. Then she opens her laptop and crosses her legs. Her skirt rides up. High. You see her thighs. Then more. She's not wearing underwear. Just bare skin right there. She types like nothing's happening. You can't focus on your book at all.<</st>>
@@.smaller;[img[img/library/13.gif]]@@
<<case 4>>
<<st>>Stairs. You're going up. She's coming down. Short dress. The angle is perfect. You see right up her skirt. Lace. Black. She sees you looking. Stops on the step.<</st>>
<<girl_library>>See something good?<</girl_library>>
<<st>>She waits for your answer. Then keeps walking. Brushes past you slow.<</st>>
@@.smaller;[img[img/library/17.webp]]@@
<<case 5>>
<<st>>You're reaching for a book on a high shelf. She comes up next to you. Reaches for the same shelf. Presses against you. Her body against your side. Soft. Warm. She grabs her book and looks at you.<</st>>
<<girl_library>>We should do this more often.<</girl_library>>
<<st>>Walks away. Leaves you standing there heated.<</st>>
@@.smaller;[img[img/library/16.webp]]@@
<</switch>>
<<case 3>>
/* мягкая версия (без явных секс-действий). Ты можешь заменить на свои 11–15 локально */
<<switch $libEventRoll.pick>>
<<case 1>>
<<st>>Quiet floor. Empty. You're reading in a corner. She sits down right next to you. Too close. Stranger. Cute. She puts her hand on your thigh under the table. Squeezes.<</st>>
<<girl_library>>Shh. Don't say anything.<</girl_library>>
<<st>>Her hand moves up. Unzips your pants. Strokes you slow under the table. People around. She keeps reading her book with the other hand. Like nothing's happening. You bite your lip so you don't moan.<</st>>
@@.smaller;[img[img/library/19.webp]]@@
<<case 2>>
<<st>>Stacks. Back corner. Dark. You hear breathing. Turn the corner. She's there. Against the shelves. Skirt up. Fingers inside herself. Eyes closed.<</st>>
<<st>>She hears you. Opens her eyes. Looks at you.<</st>>
<<girl_library>>Come here. Now.<</girl_library>>
<<st>>You go. She pulls you close. Rips at your belt. Pushes you inside her right there against the books. Hand over your mouth so you don't make noise. She bites your neck to stay quiet. Fucks you hard and fast in the dark.<</st>>
@@.smaller;[img[img/library/20.webp]]@@
<<case 3>>
<<st>>Study room. Private. Locked. You have a key. She knows. She finds you in the hallway.<</st>>
<<girl_library>>Let me in.<</girl_library>>
<<st>>You do. Door locks. She drops to her knees immediately. Takes you deep. Gagging. Tears in her eyes. Doesn't stop. Pushes you into a chair and rides you. Bouncing. Loud. Doesn't care who hears through the door.<</st>>
<<st>>She cums first. Then makes sure you do too.<</st>>
@@.smaller;[img[img/library/22.webp]]@@
<<case 4>>
<<st>>Bathroom. Single stall. Locked. You're washing hands. Knock on the door. You open it. She pushes in. Locks it behind her. Young. Needy. Pushes you against the sink.<</st>>
<<girl_library>>I've been watching you for an hour.<</girl_library>>
<<st>>She lifts her skirt. No panties. Jumps up. Wraps legs around you. You're inside her in seconds. Sink digging into your back. Her mouth on your neck so she doesn't scream.<</st>>
@@.smaller;[img[img/library/24.webp]]@@
<<case 5>>
<<st>>Late night. Library closing soon. Empty floors. You're putting books away. She appears. Staff maybe. Student maybe. Doesn't matter.<</st>>
<<st>>She pushes you into the aisle. Against the shelves. Pulls your pants down. Bends over in front of you. Spreads herself open with her fingers.<</st>>
<<girl_library>>Right here. Right now. Before someone comes.<</girl_library>>
<<st>>You grab her hips. Push in. She's soaking wet. Ready. You fuck her standing there in the dark between the philosophy section. Books falling off shelves. Don't care. She bites her own hand to stay quiet while she cums.<</st>>
@@.smaller;[img[img/library/23.webp]]@@
<</switch>>
<</switch>>
<<charAddStat "rick" "cor" 1>>
<<button [[Back|Library_Menu]]>><</button>><<st>>You need a job. Money's getting tight. You check online for openings. Nothing great. Then you spot something. A hotel nearby is hiring. Walking distance. You throw on decent clothes and go check it out. The place looks nice. Fancy lobby. Smells expensive. You ask for the manager. A woman in a suit comes out. She interviews you right there. Takes about ten minutes.<</st>>
<<st>>She asks about your experience. You stretch the truth a little. She doesn't seem to care.<</st>>
<<manager>>You start Monday. Assistant manager. The current one's retiring next month. You'll take over.<</manager>>
<<rick>>Assistant manager? For real?<</rick>>
<<manager>>For real. Means you do half the work around here. Congratulations.<</manager>>
<<st>>She shakes your hand and walks away. You stand in the lobby. Assistant manager of a hotel. Not bad for a guy who was just broke.<</st>>
<<set $work.employed = true>>
<<button [[Back|Work_London]]>><</button>><<silently>>
<<set _cost = 10>>
<<set _can = ($rick.energy >= _cost)>>
<</silently>>
<<if not _can>>
<<st>>You’re too fucking drained to work.
Sleep first, or eat something.<</st>>
<<button [[Back|Work_London]]>><</button>>
<<else>>
<<charAddStat $rick "energy" -10>>
<<goto "Work_Shift_Run">>
<</if>><<silently>>
<<set $work.shifts += 1>>
/* pick normal work event 1..15 with anti-repeat */
<<set _last = $work.lastWork>>
<<set _pick = random(1,15)>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<set $work.lastWork = _pick>>
/* chances */
<<set _hot = (random(1,100) <= 25)>>
<<set _item = (random(1,100) <= 18)>>
/* hot tier by level */
<<set _hotTier = 1>>
<<if $rick.lvl >= 20>>
<<set _hotTier = 3>>
<<elseif $rick.lvl >= 10>>
<<set _hotTier = 2>>
<</if>>
<</silently>>
<<switch _pick>>
<<case 1>><<st>>You're at the front desk, checking in a family. Kids are loud. Mom looks exhausted. You get them sorted fast. Mom smiles. "Thanks, you're a lifesaver." Feels good.<</st>>
<<case 2>><<st>>Old guy needs help with his bags. You grab them and walk him to his room. Tips you twenty bucks. Not bad for five minutes of work.<</st>><<charAddStat $rick "money" 20>>
<<case 3>><<st>>You're in the back office going over schedules. Boring paperwork but someone's gotta do it. Figure out who works when for the next week. Done.<</st>>
<<case 4>><<st>>Girl at the front desk looks stressed. Lines long. You jump in and start checking people in. She mouths "thank you" across the lobby. Teamwork.<</st>>
<<case 5>><<st>>Someone complains about noisy neighbors. You go up to check. Drunk guys being loud. You tell them to keep it down or leave. They shut up. Easy.<</st>>
<<case 6>><<st>>Cleaning crew is short today. You grab a mop and help out in the hallways. Not your job but whatever. Gets shit done.<</st>>
<<case 7>><<st>>Hot girl at the pool asks for extra towels. You bring them. She's in a tiny bikini. Wet. You try not to stare. Fail. She notices. Smiles.<</st>>
<<case 8>><<st>>You're helping the kitchen staff unload deliveries. Heavy boxes but whatever. One of the cooks hands you a beer after. "Off the record." Cool.<</st>>
<<case 9>><<st>>Doing room checks. Making sure everything's clean. One room still has a tip on the nightstand. Twenty bucks. Guess housekeeping missed it. Your lucky day.<</st>><<charAddStat $rick "money" 20>>
<<case 10>><<st>>Woman at the front desk is pissed. Room not ready. You calm her down, upgrade her for free. She leaves happy. Manager would kill you but whatever.<</st>>
<<case 11>><<st>>You're walking through the lobby and see a guy trying to sneak in a hooker. Really? You kick them both out. Not tonight.<</st>>
<<case 12>><<st>>Helping the maintenance guy fix a clogged toilet in room 204. Gross but part of the job. He tells you stories about famous people who've stayed here. Actually interesting.<</st>>
<<case 13>><<st>>You're covering the front desk late night. Slow. Bored. Then a girl walks in to check in. Drunk. Cute. Flirts with you. You flirt back. She asks for your number. You give it.<</st>>
<<case 14>><<st>>Manager calls you into her office. Thinks you're doing a good job. Says keep it up. Might mean something. Might mean nothing. But feels good.<</st>>
<<case 15>>
<<st>>Big group checking in all at once. Wedding party. Drunk. Loud. Demanding. You handle it. Keep smiling. Get everyone sorted. Keys. Directions. Questions. All of it.
The bride comes up last. Tips you a hundred bucks.<</st>>
<<st>>You're a fucking rockstar. Thank you.<</st>>
<<st>>You just made someone's wedding night easier. And got paid for it.<</st>><<charAddStat $rick "money" 100>><</switch>>
/* pay scaling */<<set _basePay = 60 + ($rick.lvl * 8)>><<charAddStat $rick "money" _basePay>>
/* exp */<<charAddStat $rick "exp" 1>>
<<if _item>><<goto "Work_ItemFind">><<elseif _hot>><<set $workHotTier = _hotTier>><<goto "Work_HotEvent">><<else>><<button [[Back|Work_London]]>><</button>>
<</if>><<silently>>
<<set _last = $work.lastItem>>
<<set _pick = random(1,15)>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<if _pick is _last>><<set _pick = random(1,15)>><</if>>
<<set $work.lastItem = _pick>>
<</silently>>
<<switch _pick>>
<<case 1>>
<<st>>You're cleaning out a room after a guest checks out. Look under the bed and spot something. A little velvet box. You open it and find a silver necklace. Simple but pretty. Guest is long gone. Probably won't come back for it. You pocket it and grin. Hey, finders keepers. This would look good on some lucky girl.<</st>>
<<pickup $backpack "silver_necklace" 1>>
<<case 2>>
<<st>>Helping the maid service with linens. One of the girls holds up a bottle of expensive perfume left behind in room 312.<</st>>
<<maid_girl>>You want it? Manager said toss anything unclaimed.<</maid_girl>>
<<st>>You take it and give it a sniff. Damn, that smells good. Some girl out there is gonna love this.<</st>>
<<pickup $backpack "expensive_perfume" 1>>
<<case 3>>
<<st>>You're fixing a loose drawer at the front desk. Pull it out and something falls to the floor. Wow. It's a gold bracelet. Delicate. Pretty. Must've been stuck back there for months. Well, nobody's coming for it now. You slide it in your pocket and smile. Pretty thing for a pretty girl.<</st>>
<<pickup $backpack "gold_bracelet" 1>>
<<case 4>>
<<st>>Walking through the hallway and notice something shiny on the floor. A little earring. Diamond-looking. Probably fake but honestly it looks real. You pick it up and turn it in the light. Could be real though. Who knows. Either way. Some girl would wear this.<</st>>
<<pickup $backpack "diamond_earring" 1>>
<<case 5>>
<<st>>Helping sort through the lost and found box. Old stuff nobody claimed. You dig around and find a silk scarf. Expensive brand tag still attached. Nobody claimed it for six months. That means it's yours now. You run it through your fingers. Silk feels nice. Real nice. Imagine that around a girl's neck.<</st>>
<<pickup $backpack "silk_scarf" 1>>
<<case 6>>
<<st>>Working late at the front desk. Quiet night. You open a drawer and spot a small gift card someone must've left behind. Fifty bucks to a nice restaurant downtown. They're definitely not coming back for it at this point. You slide it in your wallet and smirk. Date night just got cheaper.<</st>>
<<pickup $backpack "restaurant_giftcard_50" 1>>
<<case 7>>
<<st>>Cleaning out the break room fridge. Behind it you find a box of chocolates. Expensive ones. Expired by like a week. So what. You stash them in your bag and pat your pocket. Chocolate works every time. Every single time.<</st>>
<<pickup $backpack "expensive_chocolates_box" 1>>
<<case 8>>
<<st>>Guest checks out and you go to clean the room. On the desk sits a candle. Never even opened. Smells like vanilla and something else. Something sexy.<</st>>
<<st>>You take it and give it a long sniff. Yeah. Light this up in a dark room with a girl. Game over.<</st>>
<<pickup $backpack "vanilla_candle" 1>>
<<case 9>>
<<st>>Maintenance guy finds a ring in the laundry room and hands it to you. Silver. Simple design. Pretty.<</st>>
<<maintenance_guy>>My wife would kill me if I brought home another ring. You take it.
Could be nothing. Could be something. But a girl will like it.<</maintenance_guy>>
<<pickup $backpack "silver_ring" 1>>
<<case 10>>
<<st>>You're organizing the lost and found closet. Bottom shelf has a small box. Inside, a pair of sunglasses. Designer. Frames still perfect.<</st>>
<<st>>Nobody claimed them. Six months passed. They're yours now. You put them on and check the mirror. Not bad. But a girl would look hotter in these. Just saying.<</st>>
<<pickup $backpack "designer_sunglasses" 1>>
<<case 11>>
<<st>>Helping clean up around the pool area. Under a lounge chair you find a watch. Not a man's watch. Small. Elegant. Feminine. You wipe it off and check. Still works fine. Some girl's wrist would look way better with this on it.<</st>>
<<pickup $backpack "elegant_watch" 1>>
<<case 12>>
<<st>>Guest leaves in a hurry. You check the room after. On the bathroom counter sits perfume. Almost full. Expensive brand too. You spray a little on your wrist and sniff. Damn. That's nice. Yeah. This is definitely coming with you.<</st>>
<<pickup $backpack "expensive_perfume" 1>>
<<case 13>>
<<st>>Working the late shift. Cute girl at the bar flirts with you hard. Leaves her number on a napkin. You take it. Then you notice something she left on the counter. A little hair clip. Crystal. Pretty.<</st>>
<<st>>You grab it before anyone else spots it. Might not use it for her. But some girl will appreciate this.<</st>>
<<pickup $backpack "crystal_hair_clip" 1>>
<<case 14>>
<<st>>You're in the storage room looking for supplies. Knock over a box and something falls out. A small plush toy. A little bear. Still has tags. Random but honestly kinda cute.<</st>>
<<st>>You pick it up and squeeze it. Not bad. Girls love cute shit. Even grown ones. Especially grown ones.<</st>>
<<pickup $backpack "plush_bear_small" 1>>
<<case 15>>
<<st>>Manager calls you into her office and hands you a gift basket. Leftover from some corporate event. Nobody claimed it. Wine, chocolate, little bottles of fancy lotion.<</st>>
<<manager>>Take it. Better than throwing it out.<</manager>>
<<st>>You carry it out with a big grin. This is basically a romance kit. Ready to go.<</st>>
<<pickup $backpack "gift_basket_fancy" 1>>
<</switch>>
<br>
<<button [[Back|Work_London]]>><</button>><<silently>>
<<set _tier = $workHotTier or 1>>
/* anti-repeat inside tier */
<<set _last = $work.lastHot[_tier]>>
<<set _pick = random(1,5)>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<if _pick is _last>><<set _pick = random(1,5)>><</if>>
<<set $work.lastHot[_tier] = _pick>>
<</silently>>
<<switch _tier>>
<<case 1>>
<<switch _pick>>
<<case 1>>
<<st>>You're walking through the hallway with a stack of towels. Door to room 217 is cracked open. You glance in without thinking.<</st>>
<<st>>Girl inside changing. Facing away. Just bra and thong. Perfect ass. Smooth skin. She hasn't noticed you.<</st>>
<<st>>You keep walking like nothing happened. But fuck. That image is staying with you.<</st>>
@@.smaller;[img[img/work/1.webp]]@@
<<case 2>>
<<st>>Covering the front desk during the afternoon rush. This girl walks in. Maybe twenty-two. Dressed like she's going out. Tiny dress. Long legs. Everything tight.<</st>>
<<st>>She asks about pool hours. You tell her. She leans on the counter while you talk. Dress dips. You see cleavage. Lots of it.<</st>>
<<st>>She catches you looking. Smiles. Says thanks and walks away. You watch her ass all the way to the elevator.<</st>>
@@.smaller;[img[img/work/2.webp]]@@
<<case 3>>
<<st>>Working late near the pool area. Cleaning up towels. Girl comes out alone. Midnight swim or something. Wearing just a bikini. Tiny one.<</st>>
<<st>>She stretches by the pool before getting in. Arms up. Back arched. Body insane. She dives in. Swims a few laps. Gets out. Water dripping everywhere. Drops the towel and just stands there for a second. You pretend to be busy. You're not busy.<</st>>
@@.smaller;[img[img/work/3.webp]]@@
<<case 4>>
<<st>>You're in the storage room grabbing supplies. Door opens. One of the housekeeping girls walks in. Young. Cute. Sweaty from working. She doesn't see you at first. Lifts her shirt to wipe her face. You see her stomach. Her tits in a cheap bra. Nice ones.<</st>>
<<st>>She spots you. Freezes. Then just laughs. <</st>>
<<housekeeping_girl>>Don't be a creep. Get what you need and get out.<</housekeeping_girl>>
<<st>>You grab your stuff and leave. Both of you grinning.<</st>>
@@.smaller;[img[img/work/4.webp]]@@
<<case 5>>
<<st>>Elevator doors open and you step in. She's already there. Blonde. Perfect. Suit jacket open. Blouse unbuttoned more than it should be.<</st>>
<<st>>You press your floor. She presses nothing. Just looks at you. Elevator moves. She shifts her weight. Jacket falls open more. You see lace underneath. Black. She knows you're looking.<</st>>
<<st>>She gets off on your floor. Walks ahead of you down the hall. You catch her looking back once before she turns. No idea what room she went into. Doesn't matter.<</st>>
@@.smaller;[img[img/work/5.webp]]@@
<</switch>>
<<case 2>>
<<switch _pick>>
<<case 1>>
<<st>>You're walking past the pool area late night. Almost midnight. Place is empty. Then you hear water running.<</st>>
<<st>>You peek around the corner. Outdoor shower near the empty pool. She's there. Naked. Water running down her back. Soap in her hands rubbing over her tits. Slow. Not rushing.<</st>>
<<st>>She turns around. Sees you. Freezes. Then she smiles. Doesn't cover up. Just stands there. Water running over her body. You don't move. Neither does she.<</st>>
@@.smaller;[img[img/work/6.gif]]@@
<<case 2>>
<<st>>Housekeeping girl knocks on the door you're fixing. Young one.<</st>>
<<housekeeping_girl>>Hey. Can you help? My zipper's stuck. In the back.<</housekeeping_girl>>
<<st>>She turns around. Dress half open. You see her spine. The curve of her back. Straps of her bra. You try to fix the zipper. It's stuck on fabric. You pull. Dress opens more. Bra uncovered. You see the side of her tit.<</st>>
<<st>>She laughs.<</st>>
<<housekeeping_girl>>Clumsy much?<</housekeeping_girl>>
<<st>>You finally get it. She turns around. Grins.<</st>>
<<housekeeping_girl>>Thanks. You're not totally useless.<</housekeeping_girl>>
<<st>>She walks away. You're hard in your pants.<</st>>
@@.smaller;[img[img/work/7.gif]]@@
<<case 3>>
<<st>>You're in the laundry room folding sheets. Door opens. One of the maids walks in. Older. Maybe thirties. Hot though. Real hot. Big tits. Always flirting with you.<</st>>
<<maid_girl>>Boring in here alone, yeah?<</maid_girl>>
<<rick>>I'm fine.<</rick>>
<<st>>She walks closer. Picks up a sheet. Pretends to fold. Stands right next to you.<</st>>
<<maid_girl>>You ever fuck in a hotel?<</maid_girl>>
<<st>>You look at her. She's not joking.<</st>>
<<maid_girl>>Me neither. Let's change that.<</maid_girl>>
@@.smaller;[img[img/work/8.webp]]@@
<<case 4>>
<<st>>You're helping a guest with her bags. Young. Hot. Short robe on. Just got out of the pool probably. Wet hair.<</st>>
<<st>>You walk her to the room. She opens the door. Drops her bags. Turns to you.<</st>>
<<guest_hotel>>Can you help with something else?<</guest_hotel>>
<<rick>>What's that?<</rick>>
<<st>>She unties her robe. Just a little. Shows you her tits. Perfect. Tan lines. Nipples hard.<</st>>
<<guest_hotel>>My back itches. Can't reach.<</guest_hotel>>
<<st>>You step in. Door closes behind you. She turns around. Robe falls open from behind. You see everything. Her ass. Her back. The side of her tits.<</st>>
<<st>>You reach out. Touch her back. Slide your hands around. She leans back into you. Moans soft.<</st>>
<<guest_hotel>>That's the spot.<</guest_hotel>>
@@.smaller;[img[img/work/9.webp]]@@
<<case 5>>
<<st>>You're walking past the sauna late shift. Thought it was empty. Then you hear breathing. You peek through the glass. Girl inside. Towel on the bench. Naked. Legs spread. Her hand between them. Moving slow. Eyes closed. She doesn't know you're there.<</st>>
<<st>>She opens her eyes. Sees you. Doesn't stop. Keeps going. Looks right at you while she does it.<</st>>
@@.smaller;[img[img/work/10.webp]]@@
<</switch>>
<<case 3>>
/* soft dirty tier3 (ты можешь заменить на свой оригинал локально) */
<<switch _pick>>
<<case 1>>
<<st>>You're delivering fresh towels to room 304. Knock. No answer. Door's cracked. You push it open. She's on the bed. Guest from earlier. Checked in alone. Now she's naked. Legs open. Fingers inside herself. She looks up at you. Doesn't stop.<</st>>
<<guest_hotel>>Close the door.<</guest_hotel>>
<<st>>You do. Drop the towels. She spreads wider. You're already hard.<</st>>
@@.smaller;[img[img/work/11.webp]]@@
<<case 2>>
<<st>>Housekeeping girl from before. The one who caught you looking. You're in the storage closet grabbing supplies. She walks in. Locks the door behind her.<</st>>
<<housekeeping_girl>>You've been staring at me for weeks.<</housekeeping_girl>>
<<st>>She pushes you against the shelves. Hands on your belt. Drops to her knees. Takes you in her mouth right there between the bleach and the extra pillows.<</st>>
@@.smaller;[img[img/work/12.webp]]@@
<<case 3>>
<<st>>You're cleaning room 217. Bed not made yet. Bathroom door open. You hear the shower running.<</st>>
<<st>>Then it stops. Door opens. Steam rolls out. She walks out naked. Water dripping. Guest. Maybe thirty. Alone. She sees you. Doesn't cover up. Just walks to the bed slow. Lies down. Spreads her legs.<</st>>
<<guest_hotel>>Towels. Now.<</guest_hotel>>
<<st>>You bring them. Don't leave.<</st>>
@@.smaller;[img[img/work/13.webp]]@@
<<case 4>>
<<st>>Wedding party girl from the front desk. The one who flirted hard. She finds you later that night. Drunk. Happy. Grabs your hand.<</st>>
<<wedding_girl>>Which room is empty?<</wedding_girl>>
<<st>>You take her to 412. Vacant. Door locks. She pushes you on the bed. Lifts her dress. No underwear. Climbs on top. Rides you hard. Moans into your mouth so nobody hears.<</st>>
@@.smaller;[img[img/work/14.webp]]@@
<<case 5>>
<<st>>You're in the family bathroom off the lobby. Fixing a towel rack. Door unlocks behind you. Clicks shut.<</st>>
<<st>>One of the maids. Young. Dark hair. Been giving you looks all week. She locks it. Walks up behind you. Hands slide around your waist. Down your pants. Strokes you hard. Spins you around and sits on the counter. Pulls her panties off. Spreads her legs.<</st>>
<<maid_girl>>You got two minutes before someone knocks.<</maid_girl>>
<<st>>You make it count.<</st>>
@@.smaller;[img[img/work/15.webp]]@@
<</switch>>
<</switch>>
<<button [[Back|Work_London]]>><</button>>