/* Intro */
<<media "ui/logoBig.png" "si noShadow bigLogo">>
<div class="si1">
<<btn "terms" "New game" null "menu blink">> /*[[terms]]*/
<<if !$supporter>><<btnPopup "support" "Support the author">><</if>>
<<btnPopup "changelog" "Check new content">>
<br><br>
<<btn "saves" "Saves" null "menu">>
</div>
<p><div class="desc center si1">v. <<print setup.verNum>></div></p><<chunks>>
<<menu null null "location">>
/* Quests */
<<btn "bridExo" "Look for socks" `"bridExo=6; counter:bridExo"+$curLoc+"Socks=null"` "quest">>
<<btn "daphIntro" "Unpack" "daphIntro=1" "quest">>
<<btn "alexaHack" "Check the connection" "alexaHack=4" "quest">>
<<btn "daphBdsm" "Drill a hole" "drill; daphBdsm=4" "quest">>
<<btn "miaDate" "Find a restaurant" "miaDate=2; counter:restaurantDebuff=null" "quest">>
<<btn "daphMeatBags" "Put on some clothes" "daphMeatBags=1; !item:daphMeatBags_clothes; item:daphMeatBags_clothes+" "quest store">>
<<btn "daphMakeKey" "Hide and wait" "daphMakeKey=2; $daphMakeKey_lost=3" "quest">>
<<btn "daphMakeKey" "Craft the key" "daphMakeKey=4" "quest">>
<<btn "kellyPower" "Write a letter" "kellyPower=1" "quest">>
<<btn "karmaIntro" "Do $karma.name's homework" "karmaIntro=3; $karmaIntro_ans=null" "quest">>
<<btn "karmaIntro" "Do $karma.name's homework" "karmaIntro=4; $karmaIntro_ans=null" "quest">>
<<btn "karmaIntro" "Do $karma.name's homework" "karmaIntro=5; $karmaIntro_ans=null" "quest">>
<<btn "xxxmas" "Look out the window" "xxxmas=1" "quest store">>
<<btn "roseIntro" "Look for sport outfit" "roseIntro=2" "quest quick">>
/* Activities */
<<btn "daphGuestStudy" "Study" "schoolIntro=DONE" "quick">> /*[[daphGuestStudy]]*/
<<btn "daphGuestSearch" "Search room" "daphIntro=DONE" "activ">> /*[[daphGuestSearch]]*/
<<btn "daphGuestFeed" "Watch cam feed" "alexaHack=DONE" "activ">> /*[[daphGuestFeed]]*/
<<btn "daphGuestHole" "Check the hole" "daphBdsm=DONE" "activ">> /*[[daphGuestHole]]*/
<<btn "daphGuestMasturbate" "Masturbate" "daphIntro=DONE; !ballsSmash" "quick">> /*[[daphGuestMasturbate]]*/
<<btn "daphGuestTrain" "Train" "dumbbell; dom+; sore+; !sore" "chore">> /*[[daphGuestTrain]]*/
<<btn "daphGuestRead" "Read books" "books; dom+" "activ">> /*[[daphGuestRead]]*/
<<btn "daphGuestComics" "Read comics" "comics; love+" "activ">> /*[[daphGuestComics]]*/
<<btn "daphGuestMemes" "Watch memes" "daphIntro=DONE; love+" "activ">> /*[[daphGuestMemes]]*/
<<btn "daphGuestSleep" "Go to sleep" "$sleepReset+; time+9" "quick">> /*[[daphGuestSleep]]*/
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
/* Travel */
<<wrapper "day=workdays; period=dayhours; daphHouseKey; halloween=0; !$questMode">>
<hr class="marginTop10px">
<<btn "travel" "Travel to the College" "cash-2; $travelTo+cityCollege" "travel marginTop10px">>
<</wrapper>>
<</chunks>><<chunks>>
<<menu>>
/* Locations */
<<btnImg "daphGuest">>/*[[daphGuest]]*/
<<btnImg "daphRoom">>/*[[daphRoom]]*/
<<btnImg "daphAlex">>/*[[daphAlex]]*/
<<btnImg "daphBath">>/*[[daphBath]]*/
<<btnImg "daphLiv">>/*[[daphLiv]]*/
<<btnImg "daphKit">>/*[[daphKit]]*/
<<btnImg "daphGard">>/*[[daphGard]]*/
<<btnImg "daphCel">>/*[[daphCel]]*/
<<btnImg "daphCar">> /*[[daphCar]]*/
/* Exit */
<<btn $curLocParent "Go out" "daphHouseKey" "exit">>
<</chunks>><<chunks>>
/* Unique NPCs in location */
<<wrapper "$curLocDoor=open; dudeDaphne">>
<p class="locDesc">''$dudeDaphne.name'' is here too!</p>
<<media `"characters/guy/dudeDaphne" + $dudeDaphne.pic + ".jpg"` "character">>
<<dial "guy" "That's trespassing, son!">>
<</wrapper>>
<<menu>>
/* Quests */
<<btn "bridExo" "Look for socks" `"bridExo=6; counter:bridExo"+$curLoc+"Socks=null"` "quest">>
<<wrapper "!daphne">>
<<btn "daphHack" "Hack her computer" "daphHack=2" "quest">>
<<btn "daphBdsm" "Look for the cellar key" "daphBdsm=2" "quest">>
<<btn "daphMakeKey" "Look for the cellar key" "daphMakeKey=2; $daphMakeKey_lost=null" "quest">>
<<btn "kellyPower" "Look for the Bible" "kellyPower=5; !bible; $kellyPower_task+bible" "quest">>
<</wrapper>>
<<btn "daphMakeKey" "Search $daphne.name's purse" "daphMakeKey=2; $daphMakeKey_lost=2; daphne" "quest">>
<<wrapper "while!=sleep; daphne">>
<<btn "daphIntro" "Talk about the room" "daphIntro=2" "quest">>
<<btn "daphHelp" "Make $daphne.name a meal" "daphHelp=4; item:groceries; $char+daphne" "quest">>
<<btn "daphHelp" "Tell $daphne.name you finished chores" "daphHelp=4; !item:groceries" "quest">>
<<btn "daphFixGarden" "Talk about the garden" "daphFixGarden=1" "quest">>
<<btn "daphFixGarden" "Tell $daphne.name the garden is fixed" "daphFixGarden=6" "quest">>
<</wrapper>>
<<btn "xxxmas" "Give $daphne.name the package" "xxxmas=3" "quest">>
/* Closed doors */
<<btn "daphRoomKnock" "Knock at the door" "daphne; locked" "quick">> /*[[daphRoomKnock]]*/
<<wrapper "closed">>
<<btn "daphRoomKnock" "Knock at the door" "daphne; closed" "quick">> /*[[daphRoomKnock]]*/
<<btn "daphRoomEnter" "Enter without knocking" "daphne; closed" "quick">> /*[[daphRoomEnter]]*/
<<btn "daphRoomPeek" "Peek" "daphne; closed" "quick">> /*[[daphRoomPeek]]*/
<<btn "doorBreakIn" "Break in" "!daphne; closed" "quick">>
<</wrapper>>
<<btn "doorOpen" "Open with a key" "!daphne; item:daphRoomKey; locked" "quick">>
/* Activities */
<<btn "daphRoomSearch" "Search room" "!daphne" "activ">> /*[[daphRoomSearch]]*/
<<btn "daphRoomSearch" "Search room" "alexa; while=sleep; $permission=forced" "activ">> /*[[daphRoomSearch]]*/
<<btn "daphRoomPlay" "Play with $daphne.name" "daphne; while=sleep; $permission=forced; !ballsSmash" "activ">> /*[[daphRoomPlay]]*/
<<btn "daphRoomWake" "Wake $daphne.name" "daphne; while=sleep; $permission=forced" "quick">> /*[[daphRoomWake]]*/
/* Relations */
<<wrapper "daphne; !dudeDaphne; $permission!=forced">>
<<btn "talk" "Chat with $daphne.name" "$char+daphne" "chat relation">>
<<btn "flirt" "Flirt with $daphne.name" "!alexa; daphne.status=3; daphne.status!=5; $char+daphne" "flirt relation">>
<<btn "sex" "Fuck $daphne.name" "!alexa; daphne.status=5; $char+daphne" "sex relation">>
<</wrapper>>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
/* Unique NPCs in location */
<<wrapper "open; dudeAlexa">>
<p class="locDesc">''$dudeAlexa.name'' is here too!</p>
<<media `"characters/guy/dudeAlexa" + $dudeAlexa.pic + ".jpg"` "character">>
<<dial "guy" "I'm gonna whip you with my monster dick, boi!">>
<</wrapper>>
<<menu>>
/* Quests */
<<btn "bridExo" "Look for socks" `"bridExo=6; counter:bridExo"+$curLoc+"Socks=null"` "quest">>
<<btn "alexaHack" "Hack her computer" "quest:alexaHack=2; !alexa" "quest">>
<<btn "kellyPower" "Look for the printer" "kellyPower=2" "quest">>
<<wrapper "while!=sleep; alexa; !dudeAlexa">>
<<btn "alexaIntro" "Talk with $alexa.name" "alexaIntro=1" "quest">>
<<btn "alexaIntro" "Help $alexa.name with homework" "alexaIntro=2" "quest">>
<<btn "alexaIntro" "Help $alexa.name with homework" "alexaIntro=3" "quest">>
<<btn "alexaIntro" "Help $alexa.name with homework" "alexaIntro=4" "quest">>
<<btn "alexaIntro" "Talk with $alexa.name about tutoring" "alexaIntro=5" "quest">>
<<btn "alexaPool" "Show the pool to $alexa.name" "alexaPool=3" "quest">>
<<btn "alexaPool" "Show $alexa.name the new pool" "alexaPool=5" "quest">>
<</wrapper>>
/* Closed doors */
<<btn "daphAlexKnock" "Knock at the door" "alexa; locked" "quick">> /*[[daphAlexKnock]]*/
<<wrapper "closed">>
<<btn "daphAlexKnock" "Knock at the door" "alexa; closed" "quick">> /*[[daphAlexKnock]]*/
<<btn "daphAlexEnter" "Enter without knocking" "alexa; closed" "quick">> /*[[daphAlexEnter]]*/
<<btn "daphAlexPeek" "Peek" "alexa; closed" "quick">> /*[[daphAlexPeek]]*/
<<btn "doorBreakIn" "Break in" "!alexa; closed" "quick">>
<</wrapper>>
<<btn "doorOpen" "Open with a key" "!alexa; item:daphAlexKey; locked" "quick">>
/* Activities */
<<btn "daphAlexSearch" "Search room" "!alexa" "activ">> /*[[daphAlexSearch]]*/
<<btn "daphAlexSearch" "Search room" "alexa; while=sleep; $permission=forced" "activ">> /*[[daphAlexSearch]]*/
<<btn "daphAlexPlay" "Play with $alexa.name" "alexa; !dudeAlexa; while=sleep; $permission=forced; !ballsSmash" "activ">> /*[[daphAlexPlay]]*/
<<btn "daphAlexHomework" "Help $alexa.name with homework" "alexaIntro=DONE; alexa; !dudeAlexa; $permission=1; day=workdays; while!=sleep" "activ">> /*[[daphAlexHomework]]*/
<<btn "daphAlexDicks" "Compare dicks" "alexa; dudeAlexa" "quick">> /*[[daphAlexHomework]]*/
<<btn "daphAlexWake" "Wake $alexa.name" "alexa; while=sleep; $permission=forced" "quick">> /*[[daphAlexWake]]*/
/* Relations */
<<wrapper "alexa; !dudeAlexa; $permission!=forced">>
<<btn "talk" "Chat with $alexa.name" "!period=night; $char+alexa" "chat relation">>
<<btn "flirt" "Flirt with $alexa.name" "alexa.status=3; alexa.status=!5; !daphne; $char+alexa" "flirt relation">>
<<btn "sex" "Fuck $alexa.name" "alexa.status=5; !daphne; $char+alexa" "sex relation">>
<</wrapper>>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Quests */
<<btn "bridExo" "Look for socks" `"bridExo=6; counter:bridExo"+$curLoc+"Socks=null"` "quest">>
<<wrapper "$permission!=forced">>
<<btn "daphHelp" "Clean toilet" "daphHelp=3" "quest">>
<<btn "daphHelp" "Do laundry" "daphHelp=2" "quest">>
<<btn "daphMakeKey" "Create a diversion" "daphMakeKey=2; $daphMakeKey_lost=2; $daphMakeKey_diversion=null; $daphMakeKey_diversion+2; !daphne; !alexa" "quest">>
<</wrapper>>
/* Closed doors */
<<wrapper "closed">>
<<btn "daphBathKnock" "Knock at the door" "closed; daphne" "quick">> /*[[daphBathKnock]]*/
<<btn "daphBathKnock" "Knock at the door" "closed; alexa" "quick">> /*[[daphBathKnock]]*/
<<btn "daphBathEnter" "Enter without knocking" "closed; daphne" "quick">> /*[[daphBathEnter]]*/
<<btn "daphBathEnter" "Enter without knocking" "closed; alexa" "quick">> /*[[daphBathEnter]]*/
<<btn "daphBathPeek" "Peek" "closed; daphne" "quick">> /*[[daphBathPeek]]*/
<<btn "daphBathPeek" "Peek" "closed; alexa" "quick">> /*[[daphBathPeek]]*/
<</wrapper>>
/* Activities */
<<wrapper "$permission!=forced">>
<<btn "daphBathShit" "Take a shit" "!asspain; !daphne; !alexa; $lvlup" "activ">> /*[[daphBathShit]]*/
<<btn "daphBathShave" "Shave" "love+" "activ">> /*[[daphBathShave]]*/
<<btn "daphBathShower" "Shower" "!alexa; !daphne; dom+" "activ">> /*[[daphBathShower]]*/
<<btn "daphBathSearch" "Search bathroom" "!alexa; !daphne" "activ">> /*[[daphBathSearch]]*/
<<btn "daphBathWashDaphne" "Wash $daphne.name's back" "daphne; daphne.love+2; $playerShower+0; effect:clean+" "activ">> /*[[daphBathWashDaphne]]*/
<<btn "daphBathWashAlexa" "Wash $alexa.name's ass" "alexa; alexa.dom+2; $playerShower+0; effect:clean+" "activ">> /*[[daphBathWashAlexa]]*/
<</wrapper>>
<<btn "daphBathWatch" "Watch $daphne.name shower" "daphne; $permission=forced" "quick">> /*[[daphBathWatch]]*/
<<btn "daphBathWatch" "Watch $alexa.name shower" "alexa; $permission=forced" "quick">> /*[[daphBathWatch]]*/
/* Chores */
<<if $permission != "forced" && $now != "Night">>
<<btn "daphBathToilet" "Clean toilet" "daphHelp=DONE; cash+50; day=sunday" "chore">> /*[[daphBathToilet]]*/
<<btn "daphBathLaundry" "Do laundry" "daphHelp=DONE; cash+25" "chore">> /*[[daphBathLaundry]]*/
<</if>>
/* Relations */
<<wrapper "$permission!=forced">>
<<btn "sex" "Fuck $alexa.name" "alexa; !daphne; alexa.status=4; $char+alexa" "sex relation">>
<<btn "sex" "Fuck $daphne.name" "daphne; !alexa; daphne.status=4; $char+daphne" "sex relation">>
<</wrapper>>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Quests */
<<wrapper "period!=night">>
<<wrapper "daphne">>
<<btn "daphIntro" "Talk about the room" "daphIntro=2" "quest">>
<<btn "daphHelp" "Make $daphne.name a meal" "daphHelp=4; item:groceries; $char+daphne" "quest">>
<<btn "daphHelp" "Tell $daphne.name you finished chores" "daphHelp=4; !item:groceries" "quest">>
<<btn "daphFixGarden" "Talk about the garden" "daphFixGarden=1" "quest">>
<<btn "daphFixGarden" "Tell $daphne.name the garden is fixed" "daphFixGarden=6" "quest">>
<<btn "daphMakeKey" "Search $daphne.name's purse" "daphMakeKey=2; $daphMakeKey_lost=2; daphne; !alexa" "quest">>
<</wrapper>>
<<wrapper "alexa">>
<<btn "alexaIntro" "Talk with $alexa.name" "alexaIntro=1" "quest">>
<<btn "alexaIntro" "Talk with $alexa.name about tutoring" "alexaIntro=5" "quest">>
<<btn "alexaPool" "Show the pool to $alexa.name" "alexaPool=3" "quest">>
<<btn "alexaPool" "Show $alexa.name the new pool" "alexaPool=5" "quest">>
<</wrapper>>
<</wrapper>>
<<btn "xxxmas" "Give $daphne.name the package" "xxxmas=3" "quest">>
/* Activities */
<<btn "daphLivSearch" "Search room" "!daphne; !alexa" "activ">> /*[[daphLivSearch]]*/
<<btn "daphLivTv" "Watch tv" null "activ">> /*[[daphLivTv]]*/
<<btn "daphLivNap" "Take a nap" "love+1; dom+1; !daphne; !alexa; !sleepless; !insomnia; period!=night" "activ">> /*[[daphLivNap]]*/
<<btn "daphLivDrink" "Make a drink" "!daphne; !alexa" "activ">> /*[[daphLivDrink]]*/
<<btn "daphLivDrinkDaphne" "Offer $daphne.name drink" "daphne" "activ">> /*[[daphLivDrinkAlexa]]*/
<<btn "daphLivDrinkAlexa" "Offer $alexa.name drink" "alexa; !daphne" "activ">> /*[[daphLivDrinkDaphne]]*/
/* Chores */
<<wrapper "period!=night">>
<<btn "daphLivDust" "Dust the room" "daphHelp=DONE; cash+25" "chore">> /*[[daphLivDust]]*/
<</wrapper>>
/* Relations */
<<btn "talk" "Chat with $alexa.name" "alexa; $char+alexa" "chat relation">>
<<btn "talk" "Chat with $daphne.name" "daphne; $char+daphne" "chat relation">>
<<btn "flirt" "Flirt with $alexa.name" "alexa; !daphne; alexa.status=3; daphne.status!=5; $char+alexa" "flirt relation">>
<<btn "flirt" "Flirt with $daphne.name" "daphne; !alexa; daphne.status=3; daphne.status!=5; $char+daphne" "flirt relation">>
<<btn "sex" "Fuck $alexa.name" "alexa; !daphne; alexa.status=5; $char+alexa" "sex relation">>
<<btn "sex" "Fuck $daphne.name" "daphne; !alexa; daphne.status=5; $char+daphne" "sex relation">>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Quests */
<<wrapper "period!=night">>
<<btn "daphHelp" "Do the dishes" "daphHelp=1" "quest">>
<<btn $curLoc "Get the scissors" "daphBdsm=1; !scissors; scissors+" "quest store">>
<<btn "daphMakeKey" "Create a diversion" "daphMakeKey=2; $daphMakeKey_lost=2; $daphMakeKey_diversion=null; $daphMakeKey_diversion+1; !daphne; !alexa" "quest">>
<<btn "kellyPower" "Steal a marshmallow" "kellyPower=2; love+10; !$kellyPowerMarshmallow; $kellyPowerMarshmallow+" "quest">>
<<wrapper "daphne">>
<<btn "daphIntro" "Talk about the room" "daphIntro=2" "quest">>
<<btn "daphHelp" "Make $daphne.name a meal" "daphHelp=4; item:groceries; $char+daphne" "quest">>
<<btn "daphHelp" "Tell $daphne.name you finished chores" "daphHelp=4; !item:groceries" "quest">>
<<btn "daphFixGarden" "Talk about the garden" "daphFixGarden=1" "quest">>
<<btn "daphFixGarden" "Tell $daphne.name the garden is fixed" "daphFixGarden=6" "quest">>
<<btn "daphMakeKey" "Search $daphne.name's purse" "daphMakeKey=2; $daphMakeKey_lost=2; !alexa" "quest">>
<</wrapper>>
<<wrapper "alexa">>
<<btn "alexaIntro" "Talk with $alexa.name" "alexaIntro=1" "quest">>
<<btn "alexaIntro" "Talk with $alexa.name about tutoring" "alexaIntro=5" "quest">>
<<btn "alexaPool" "Show the pool to $alexa.name" "alexaPool=3" "quest">>
<<btn "alexaPool" "Show $alexa.name the new pool" "alexaPool=5" "quest">>
<</wrapper>>
<</wrapper>>
<<btn "xxxmas" "Give $daphne.name the package" "xxxmas=3" "quest">>
/* Activities */
<<btn "daphKitSearch" "Search fridge" "!daphne; !alexa" "activ">> /*[[daphKitSearch]]*/
/* Chores */
<<if $now != "Night">>
<<btn "daphKitMop" "Mop floor" "daphHelp=DONE; cash+50; weekday:sunday" "chore">> /*[[daphKitMop]]*/
<<btn "daphKitDishes" "Do dishes" "daphHelp=DONE; cash+25" "chore">> /*[[daphKitDishes]]*/
<<btn "daphKitCook" "Cook for $daphne.name" "groceries; groceries-; daphne; $char+daphne" "chore">> /*[[daphKitCook]]*/
<<btn "daphKitCook" "Cook for $alexa.name" "groceries; groceries-; alexa; $char+alexa" "chore">> /*[[daphKitCook]]*/
<</if>>
/* Relations */
<<btn "talk" "Chat with $alexa.name" "alexa; $char+alexa" "chat relation">>
<<btn "talk" "Chat with $daphne.name" "daphne; $char+daphne" "chat relation">>
<<btn "flirt" "Flirt with $alexa.name" "alexa; !daphne; alexa.status=3; alexa.status!=5; $char+alexa" "flirt relation">>
<<btn "flirt" "Flirt with $daphne.name" "daphne; !alexa; daphne.status=3; daphne.status!=5; $char+daphne" "flirt relation">>
<<btn "sex" "Fuck $alexa.name" "alexa; !daphne; alexa.status=5; $char+alexa" "sex relation">>
<<btn "sex" "Fuck $daphne.name" "daphne; !alexa; daphne.status=5; $char+daphne" "sex relation">>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>>/* introPlayer */
<<chunks>>
<<media `"characters/player/" + $player.trait + "/portrait_big.jpg"` "wide">>
<script>checkInputs();</script>
<big>
<span class="fi1">This is YOU. </span>
<span class="fi2">
<<textbox "$player.name" $player.name>>
<<textbox "$player.surname" $player.surname>>
</span>
<<repeat 2s>>
<<replace "#playerName">>$player.name<</replace>>
<<replace "#changeNameDad">>$player.surname<</replace>>
<</repeat>>
</big>
<p class="fi3 clear noMarginTop">You're a cliché idiot from the suburbs - swagger of a chihuahua, skin whiter than bleached asshole, and mouth full of gangsta rap lyrics. By a surprise twist of fate you landed an ''enormous dick'', but with the whole ''beta vibe'', the prospects of actually using it are pretty damn slim.</p>
<p class="fi3">TL;DR - you're a moron with big dick, and your life is boring and predictable (<small>besides the one time you saw your mom strapon fucking a postman and the night terrors started</small>).</p>
<big class="fi3">Anyway...</big>
<<btn null null null "si3">>
<<chunk>>
<<media "characters/dad/portrait_big.jpg">>
<big>
<span>This is your dad, </span>
<span>
<<textbox "$dad.name" $dad.name>>
</span>
<span id="changeNameDad">$player.surname</span>
</big>
<p class="noMarginTop">He's always smiling, polite, on time. Retired carpet salesman and lawn mower afficionado. ''He's your nemesis''.</p>
<p>He never really did anything to earn this title, but it's more about what he didn't do. Which is - NOTHING. Never. Ever. An empty shell of a man, a smiling amoeba, floating on a comfy chair through the abyss of life. One endless neverending...</p>
<big>...boredom.</big>
<p>You always felt you were destined for something better, something grander. That deep down you're a winner, and you're going to win at life.</p>
<<btn>>
<<chunk>>
<big>You want to become an alpha male!</big>
<<delayer>>
<<media "events/intro/kungfu.mp4" "fiS volumeLow">>
<</delayer>>
<<dial "player" "Uhm... That's not what I had in mind." "fi4">>
<p class="fi4">What...? Wait! Shit. Sorry.</p>
<big class="fi4">Wrong file.</big>
<p class="fi6">Ok. I got it.</p>
<<btn null null null "si6">>
<<chunk>>
<p>So...</p>
<big>...you want to become an alpha male!</big>
<<delayer>>
<<media "events/intro/alphamale.mp4" "fiS volumeLow">>
<</delayer>>
<big class="fi3">Better?</big>
<<dial "player" "Oh, yea! That's the shit!" "fi4">>
<p class="fi5">Oh, you like it? Well, then - good news, buddy, I'm gonna help you get it. And plenty of it too.</p>
<big class="fi5">But you must earn it.</big>
<p class="fi5">You might have mastered masturbation, but sex requires other participants, and so far...</p>
<<btn null null null "si5">>
<<chunk>>
<big>You're a virgin, <span id="playerName">$player.name</span>!</big>
<<media "events/intro/virgin.mp4" "fiS">>
<p>Or actually, you //were// a virgin, because...</p>
<big>...today everything changes!</big>
<p>You leave your childhood behind and enter ''a path to become an alpha male''. Today...</p>
<<btn>>
<<chunk>>
<big>...you're flying out to Los Angeles to college.</big>
<<media "events/intro/school.mp4">>
<<btn "introTravel">> /*[[introTravel]]*/
<</chunks>>/* cityCollege */
<<chunks>>
<<wrapper "period=nighthours">>
<<wrapper "quest:slaughterhouse=DONE">>
<big>You see a creepy janitor coming your way.</big>
<<dial "janitor" "Hey! You! Go away! The College is closed!">>
<<wrapelse>>
<big>You see a creepy janitor coming your way.</big>
<<dial "janitor" "Hey! You! You got any loads...?">>
<p>That's the janitor from The Slaughterhouse. But you promised not to talk about it.</p>
<</wrapper>>
<</wrapper>>
<<wrapper "period=Morning; day=Saturday; $karmaDetention_sex_ed">>
<<pocket "charAdd+karma|collSex">>
<<wrapelse "period=Late morning; day=Saturday; $karmaDetention_sex_ed">>
<<pocket "charAdd+karma|collSex">>
<</wrapper>>
<<menu>>
/* SchoolIntro quest */
<<wrapper "$curLocDoor=open; schoolIntro!=DONE">>
<<btnImg "collArt" "schoolIntro>1">>/*[[collArt]]*/
<<btnImg "collSex" "schoolIntro>2">>/*[[collSex]]*/
<<btnImg "collNerd" "schoolIntro>3">>/*[[collNerd]]*/
<<btnImg "collFem" "schoolIntro>4">>/*[[collFem]]*/
<<btnImg "collLibrary" "schoolIntro>5">>/*[[collLibrary]]*/
<<btnImg "collMess" "schoolIntro>6">>/*[[collMess]]*/
<<btnImg "collGym" "schoolIntro>7">>/*[[collGym]]*/
<<btnImg "collToilet" "schoolIntro>8">>/*[[collToilet]]*/
<</wrapper>>
/* Locations */
<<wrapper "$curLocDoor=open; schoolIntro=DONE">>
<<btnImg "collArt">>/*[[collArt]]*/
<<btnImg "collSex">>/*[[collSex]]*/
<<btnImg "collNerd">>/*[[collNerd]]*/
<<btnImg "collFem">>/*[[collFem]]*/
<<btnImg "collLibrary">>/*[[collLibrary]]*/
<<btnImg "collMess">>/*[[collMess]]*/
<<btnImg "collGym">>/*[[collGym]]*/
<<btnImg "collToilet">>/*[[collToilet]]*/
<</wrapper>>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Locations */
<<btnImg "cityCollege">> /*[[cityCollege]]*/
<<btnImg "cityMarket">> /*[[cityMarket]]*/
<<btnImg "cityClub">> /*[[cityClub]]*/
<<btnImg "cityPolice">> /*[[cityPolice]]*/
<<btnImg "cityDoctor">> /*[[cityDoctor]]*/
<<btnImg "cityTherapist">> /*[[cityTherapist]]*/
<<btnImg "cityMotel">> /*[[cityMotel]]*/
<<btnImg "cityBeach">> /*[[cityBeach]]*/
/* Travel */
<hr class="marginTop10px">
<<btn "travel" "Travel to the neighbourhood" "cash-2; $travelTo+areaNeighbourhood" "travel">> /*[[areaNeighbourhood]]*/
<</chunks>><<chunks>>
/* Add a counter for Kelly */
<<delayer>>
<<if $churchKellyDebuff == null>>
<<pocket "counter:churchKellyDebuff-5">>
<</if>>
<</delayer>>
<<menu>>
/* Quests */
<<wrapper "quest:kellyPower!=0; quest:kellyPower!=DONE">>
<<btn "kellyPower" "Put the letters in the mailbox" "quest:kellyPower=4" "quest">>
<<btn "kellyPower" "Look for a priest robe" "quest:kellyPower=5; !priest_robe; $kellyPower_task+robe" "quest">>
<<btn "kellyPower" "Look for Sister $kelly.name" "quest:kellyPower=6; day=saturday; period=evening" "quest">>
<</wrapper>>
<<wrapper "kellyIntro!=0; kellyIntro!=DONE">>
<<btn "kellyIntro" "Clean the windows" "love+3; quest:kellyIntro=2; period!=morning; $kellyIntro_task+clean; counter:churchClean-1; $churchClean!=1" "quest chore">>
<<btn "kellyIntro" "Talk about collecting offerings" "period=morning; quest:kellyIntro=2; kelly; !$churchTrayAgree; $kellyIntro_task+talk; kelly.status=2; counter:churchTrayAsk-1; $churchTrayAsk!=1" "store quest">>
<<btn "kellyIntro" "Collect offerings" "dom+3; period=morning; quest:kellyIntro=2; kelly; $churchTrayAgree; $kellyIntro_task+tray" "quest">>
<<btn "kellyIntro" "Talk about regular work" "quest:kellyIntro=3; period=afternoon" "quest">>
<</wrapper>>
<<btn "halloween" "Look for the cemetery" "quest:halloween=3" "quest quick">>
/* Closed doors */
<<btn "doorOpen" "Open with a key" "item:churchKey; locked" "quick">>
/* Activities */
<<btn "churchNuns" "Wait for prospect nun" "quest:kellyPower=DONE; dom+3; period!=night; day=tuesday" "activ">> /*[[churchNuns]]*/
<<wrapper "day=weekend; period=dayhours">>
<<btn "churchPray" "Pray" "drained-; love+2; period!=morning" "activ">> /*[[churchPray]]*/
<<btn "churchMass" "Attend the mass" "drained-; love+2; dom-1; period=morning" "activ">> /*[[churchMass]]*/
<<btn "churchConfess" "Confess your sins" "love+4; dom-2; period!=morning" "activ">> /*[[churchConfess]]*/
<<btn "churchPriest" "Enter the confessional" "dom+4; love-2; period!=morning" "activ">> /*[[churchPriest]]*/
<</wrapper>>
<<btn "churchSearch" "Search the church" "period!=morning; !priest_robe" "activ">> /*[[churchSearch]]*/
/* Chores */
<<btn "churchClean" "Clean the windows" "love+3; cash+20; quest:kellyIntro=DONE; period!=morning" "activ">> /*[[churchClean]]*/
<<btn "churchTrayAsk" "Talk about collecting offerings" "period=morning; kelly; quest:kellyIntro=DONE; !$churchTrayAgree" "quick">> /*[[churchTrayAsk]]*/
<<btn "churchTray" "Collect offerings" "dom+3; cash+40; period=morning; kelly; quest:kellyIntro=DONE; $churchTrayAgree" "activ">> /*[[churchTrayAsk]]*/
/* Relations */
<<btn "churchChatDaphne" "Chat with $daphne.name" "daphne" "chat relation store">> /*[[churchChatDaphne]]*/
<<wrapper "kelly">>
<<btn "churchChatKelly" "Chat with $kelly.name" "period=morning; quest:kellyIntro=DONE" "chat relation store">> /*[[churchChatKelly]]*/
<<btn "talk" "Chat with $kelly.name" "$char+kelly; period!=morning; quest:kellyIntro=DONE" "chat relation">>
<<wrapper "kellyPower=DONE">>
<<btn "flirt" "Flirt with $kelly.name" "kelly.status=3; kelly.status!=5; $char+kelly; period!=morning" "flirt relation">>
<<btn "sex" "Fuck $kelly.name" "kelly.status=5; $char+kelly; day=saturday; period!=morning" "sex relation">>
<</wrapper>>
<</wrapper>>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>>/* StoryCaption */
/* For some reason this page is loaded twice, which resulted in problems with backwards compatibility (if sth was missing on the first run - it thrown errors). So I decided to not include anything on this first run if the setup.initComp is 1, let's see if it'll work */
<<if !setup.initComp>>
/* Show back button, but hide it if there's nothing to go back to (eg. after refresh) */
<<if previous()>>
<<link "<div class=\"btn back\"><span class=\"btnText\">« Back!</span></div>">>
<<run Engine.backward()>>
<<set setup.initCode = 1>>
<</link>>
<</if>>
/* Logo */
<img @src="setup.ImagePath+'ui/logoSml.png'" class="center" width="60%">
/* Version info */
<p class="desc center noMarginTop">v. <<print setup.verNum>></p>
/* Unlock button */
<<if !$supporter>>
<span class="desc">
<<set _randMsg = random(1,3)>>
<<if _randMsg == 1>>
<<btnPopup "support" "Get Early Access content" "med purple">>
<<else>>
<<btnPopup "support" "Turn on the Fap Mode" "med purple">>
<</if>>
</span>
<</if>>
/* Player */
<<set _btnHtml = "<<media 'characters/player/" + $player.trait + "/portrait_sex.jpg' 'noMarginBottom smlMarginTop avatarBig'>>">>
<<btnPopup "player" `$player.name + " " + $player.surname`>>
<<btnPopup "player" _btnHtml "noBtn">>
/* Effects */
<<for _e to 0; _e < $player.effects.length; _e++>>
<<if $player.effects[_e].left > 0 || $player.effects[_e].left == "ongoing">>
<<set _cur = setup.effects.find(obj => {return obj.id === $player.effects[_e].id})>>
<<if _cur.type == "bad">>
<<set _effectClass = "item sml lose">>
<<elseif _cur.type == "good">>
<<set _effectClass = "item sml gain">>
<<else>>
<<set _effectClass = "item sml neutral">>
<</if>>
<<link `"<div class=\"" + _effectClass + "\"><span>" + _cur.name + "</span></div>"`>><<runPopup "player">><</link>>
<</if>>
<</for>>
/* Characters and quests buttons */
<<if $charBtnShow != 1>>
<<for _ch to 0; _ch < setup.characters.length; _ch++>>
<<set _char to State.getVar('$'+setup.characters[_ch])>>
<<if _char.met == 1 && _char.type == "character" && _char.id != "dad">>
<<set $charBtnShow = 1>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if $charBtnShow || $test>>
<<btnPopup "characters" "Characters">>
<</if>>
<<if $questBtnShow != 1>>
<<if $player.quests.length > 0>>
<<set $questBtnShow = 1>>
<</if>>
<</if>>
<<if $questBtnShow || $test>>
<<btnPopup "quests" "Quests">>
<</if>>
/* ACTIVE QUESTS */
/* If it's a quest mode - display just the quest mode notification */
<<if $questMode != null>>
/* Find the quest from the quest mode */
<<set _current = $player.quests.findIndex(x => x.id === $questMode)>>
<<if _current != -1>>
<<set _curQuest = $player.quests[_current]>>
/* If the quest from quest mode is not done - print the notification */
<<if _curQuest.done != 1>>
<<set _curQuestData = setup.quests.find(obj => {return obj.id === $questMode})>>
<<set _curQuestTask = _curQuestData.tasks[_curQuest.active-1]>>
<div class="questMode notification blink">
<p class="notifHead blink">''Urgent:'' <<print _curQuestTask>></p>
</div>
/* If the quest is already done - turn off the quest mode just in case */
<<else>>
<<set $questMode = null>>
<</if>>
/* If cannot find the quest - deactivate the quest mode */
<<else>>
<<set $questMode = null>>
<</if>>
/* If it's not a quest mode - display current active quest */
<<else>>
/* Split player.quests array into separate quests */
<<set _playerQuests = clone($player.quests)>>
<<set _playerQuests = _playerQuests.sort((a,b) => (b.priority - a.priority))>>
<<for _q to 0; _q < _playerQuests.length; _q++>>
/* Load current quest data */
<<set _curQuest = setup.quests.find(obj => {return obj.id === _playerQuests[_q].id})>>
<<if _playerQuests[_q].done != 1 && _playerQuests[_q].active <= _curQuest.tasks.length && _curQuest.wip != 1>>
/* Check if quest is Early Access and build HTML */
<<set _curQuestEA = "">>
<<if tags(_curQuest.id).contains("earlyAccess") && $supporter != 1>>
<<set _curQuestEA = "<div class=\"badge earlyAccess\">Quest for supporters</div>">>
<</if>>
/* Split each quest into separate tasks and build HTML */
<<set _curQuestTask = "">>
<<for _t to 0; _t < _curQuest.tasks.length; _t++>>
/* Find active task */
<<if _t == (_playerQuests[_q].active - 1)>>
<<set _curQuestTask = _curQuest.tasks[_t]>>
<<break>>
<</if>>
<</for>>
/* Draw quest's HTML */
<<if _curQuest.name && _curQuestTask != "">>
<<set _curQuestHtml = "<h3><strong>" + _curQuest.name + "</strong>" + _curQuestEA + "</h3><p class=\"info center\">" + _curQuestTask + "</p>">>
<<btnPopup "quests" _curQuestHtml "noBtn">>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
/* Hints */
<<btnPopup "hints" "Hints">>
/* Support AD */
<<if !$supporter && $nagging>=2>>
<<set _btnHtml = "<<media 'ui/support/support_" + random(1,3) + ".mp4' 'autoplay' 'sidebar'>>">>
<<btnPopup "support" _btnHtml>>
<<btnPopup "support" "Turn off ads" "purple ads">>
<</if>>
/* Testing panel */
<<if $test>>
<h3 class="white">TESTING</h3>
<img @src="setup.ImagePath+'icons/cash.png'" class="statIcon">
<<link "-">>
<<set $yieldsForce to 1>>
<<pocket "player.cash-100">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "+">>
<<set $yieldsForce to 1>>
<<pocket "player.cash+100">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
|
<<link "<img @src=\"setup.ImagePath+'icons/love.png'\" class=\"statIcon\">">>
<<set $yieldsForce to 1>>
<<pocket "player.loveLvl+1">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "-">>
<<set $yieldsForce to 1>>
<<pocket "player.love-20">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "+">>
<<set $yieldsForce to 1>>
<<pocket "player.love+20">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
|
<<link "<img @src=\"setup.ImagePath+'icons/domination.png'\" class=\"statIcon\">">>
<<set $yieldsForce to 1>>
<<pocket "player.dominationLvl+1">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "-">>
<<set $yieldsForce to 1>>
<<pocket "player.domination-20">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "+">>
<<set $yieldsForce to 1>>
<<pocket "player.domination+20">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<br>
<<link "- per">>
<<set $forceTime to 1>>
<<set $schedForce to 1>>
<<pocket "time-1">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "+ per">>
<<set $forceTime to 1>>
<<set $schedForce to 1>>
<<pocket "time">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
|
<<link "- day">>
<<set $forceTime to 1>>
<<set $schedForce to 1>>
<<pocket "time-9">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "+ day">>
<<set $forceTime to 1>>
<<set $schedForce to 1>>
<<pocket "time+9">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<hr>
<<link "Lvl up" "lvlup">><</link>>
|
<<link "Test" "TEST">><</link>>
|
<<link "Intro" "Intro">><</link>>
|
<<link "Skip intro">>
<<set $yieldsForce to 1>>
<<pocket "daphIntro+; time+2; daphne.desire+1; love+6; cash+150">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
|
<<link "Room" "daphGuest">><</link>>
<hr>
<<link "~ $daphne.name">>
<<if $daphne.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "daphne.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $daphne.met to 0>>
<<set $daphne.status to 0>>
<<set $daphne.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $daphne.met != 0>>
<<link "[+]">>
<<pocket "charAdd+daphne">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-daphne">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[pill]">>
<<pocket "$daphne.roofies+1">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[aphro]">>
<<pocket "$daphne.aphro+1">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $alexa.name">>
<<if $alexa.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "alexa.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $alexa.met to 0>>
<<set $alexa.status to 0>>
<<set $alexa.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $alexa.met != 0>>
<<link "[+]">>
<<pocket "charAdd+alexa">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-alexa">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $mia.name">>
<<if $mia.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "mia.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $mia.met to 0>>
<<set $mia.status to 0>>
<<set $mia.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $mia.met != 0>>
<<link "[+]">>
<<pocket "charAdd+mia">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-mia">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $rose.name">>
<<if $rose.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "rose.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $rose.met to 0>>
<<set $rose.status to 0>>
<<set $rose.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $rose.met != 0>>
<<link "[+]">>
<<pocket "charAdd+rose">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-rose">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $kelly.name">>
<<if $kelly.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "kelly.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $kelly.met to 0>>
<<set $kelly.status to 0>>
<<set $kelly.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $kelly.met != 0>>
<<link "[+]">>
<<pocket "charAdd+kelly">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-kelly">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $karma.name">>
<<if $karma.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "karma.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $karma.met to 0>>
<<set $karma.status to 0>>
<<set $karma.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $karma.met != 0>>
<<link "[+]">>
<<pocket "charAdd+karma">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-karma">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $amia.name">>
<<if $amia.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "amia.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $amia.met to 0>>
<<set $amia.status to 0>>
<<set $amia.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $amia.met != 0>>
<<link "[+]">>
<<pocket "charAdd+amia">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-amia">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $nina.name">>
<<if $nina.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "nina.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $nina.met to 0>>
<<set $nina.status to 0>>
<<set $nina.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $nina.met != 0>>
<<link "[+]">>
<<pocket "charAdd+nina">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-nina">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $bridgette.name">>
<<if $bridgette.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "bridgette.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $bridgette.met to 0>>
<<set $bridgette.status to 0>>
<<set $bridgette.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $bridgette.met != 0>>
<<link "[+]">>
<<pocket "charAdd+bridgette">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-bridgette">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "~ $fluffy.name">>
<<if $fluffy.status < 5>>
<<set $yieldsForce to 1>>
<<set $schedForce to 1>>
<<pocket "fluffy.desire+10">>
<<else>>
<<set $schedForce to 1>>
<<set $fluffy.met to 0>>
<<set $fluffy.status to 0>>
<<set $fluffy.desire to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $fluffy.met != 0>>
<<link "[+]">>
<<pocket "charAdd+fluffy">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<link "[-]">>
<<set $schedForce to 1>>
<<pocket "charAdd-fluffy">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<</if>>
<br>
<<link "+ Char. Info.">>
<<for _ch to 0; _ch < setup.characters.length; _ch++>>
<<if setup.characters[_ch] != "player" && setup.characters[_ch] != "dad" && setup.characters[_ch] != "fluffy" && setup.characters[_ch] != "noone">>
<<set _char to State.getVar('$'+setup.characters[_ch])>>
<<set _char.desireKnown to 1>>
<<set _char.traitKnown to 1>>
<<set _char.kinkKnown to 1>>
<<set _char.trivia1Known to 1>>
<<set _char.trivia2Known to 1>>
<<set _char.trivia3Known to 1>>
<</if>>
<</for>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<hr>
<<link "Sex" "sex">>
<<pocket "$char+daphne; $sex+null">>
<</link>>
with
/* Reset the switch if it goes too far */
<<if $charSwitch > setup.characters.length>>
<<set $charSwitch = 0>>
<</if>>
/* Decide who should be on the switch */
<<set _sexCharSwitchDone = 0>>
<<for _ch to 0; _ch < setup.characters.length; _ch++>>
<<if _ch >= $charSwitch>>
<<set _sexCharSwitchVar = State.getVar("$" + setup.characters[_ch])>>
<<if _sexCharSwitchVar.kink != null>>
<<link `_sexCharSwitchVar.name`>>
<<set $charSwitch = _ch + 1>>
<<pocket `"$char+" + _sexCharSwitchVar.id + "; $sex+null"`>>
<<script>>state.display(state.active.title, null, "back");<</script>>
<</link>>
<<set _sexCharSwitchDone = 1>>
<<break>>
<</if>>
<</if>>
<</for>>
/* If we reached the end and didn't print anything (because of the kink) - reset the switch (needs refresh) */
<<if _sexCharSwitchDone == 0>>
<<set $charSwitch = 0>>
<</if>>
<br>
<<link "+ Sex pos." "sex">>
<<for _s to 0; _s < setup.kamasutra.length; _s++>>
<<set _current = $player.items.findIndex(x => x.id === setup.kamasutra[_s].id)>>
/* If not than add it to the array */
<<if _current == -1>>
<<set $player.kamasutra.push({id: setup.kamasutra[_s].id, known: 1, used: 0, exp: 0, rating: 0})>>
<</if>>
<</for>>
<</link>>
|
<<link "flirt" "flirt">><</link>>
|
<<link "Talk" "talk">><</link>>
<hr>
<<link "Refresh">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
|
<<link "Sleep">>
<<pocket "$sleepReset+">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
|
<<link "Test off">>
<<set $test = null>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<br>
Reporting:
<<link "$testReport">>
<<if $testReport == "hide">>
<<set $testReport = "def">>
<<elseif $testReport != "hide">>
<<set $testReport = "all">>
<<else>>
<<set $testReport = "hide">>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<br>
curRand: $curRand / minRand:
<<link "$minRand">>
<<if $minRand < setup.minRand>>
<<set $minRand to setup.minRand>>
<<else>>
<<set $minRand to 0>>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<br>
CurLocChars: <<print $curLocChars>><br>
Fap Mode:
<<if $supporter>>
Supporter
<</if>>
<br>
Permission:
<<link "$permission">>
<<if !$permission>>
<<pocket "$permission+">>
<<elseif $permission == 1>>
<<pocket "$permission+forced">>
<<else>>
<<pocket "$permission+null">>
<</if>>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<br>
While: <<print $curLocWhile>><br>
<br>
<</if>>
<hr>
/* Menu */
<<btnPopup "support" "Support the author" "med">>
<hr>
<<btnPopup "settings" "Settings" "med">>
<<btnPopup "bugs" "Bug Report" "med">>
<<btnPopup "changelog" "Changelog" "med">>
<hr>
<<btnPopup "about" "About the game" "med">>
<a href="https://www.youtube.com/watch?v=DIsMWG3UuyY&list=PLyHolgprbu8LUT77_2qL-UDoLHKhdNJop" target="_blank" class="btn med">♫ Playlist ♬</a>
<<if $test || !Has.fileAPI>>
<hr>
<<btnPopup "saveIOS" "Save/Load (iOS)">>
<</if>>
<</if>><<events "show">>
<<EVENT "alexa; while=sex">>
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
<<set _activity = ["alexa_sex0_", "alexa_sex1_", "alexa_sex2_"].random()>>
/* Do HTML */
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $alexa.name is fucking with someone.</big>
<<media `"activities/peek/daphAlex/" + _activity + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can stay and watch, but if you get caught, $alexa.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Stay and watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the crack to see better...</p>
<<media `"activities/peek/daphAlex/" + _activity + "0.jpg"`>>
<big>Lucky bastard.</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<btn $caughtLink "Stay and watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>They are not fucking around.</p>
<big>Or actually - they are!</big>
<<media `"activities/peek/daphAlex/" + _activity + "1.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom; !$jerk; $jerk+2" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$alexa.name's is fired up and covered in sweat. The guy slowly tries to loosen up her asshole with a finger.</p>
<<dial "alexa" "What the fuck are you doing?!">>
<<dial "guy" "Sorry, I thought you like in the ass?">>
<<dial "alexa" "I like being fucked in the ass with a dick, not a fucking finger. Shove the big thing in there right the fuck now.">>
<p>The guy smiles like he won on the lottery.</p>
<<media `"activities/peek/daphAlex/" + _activity + "2.jpg"`>>
<big>$alexa.name is a true anal princess!</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom; !$jerk; $jerk+3" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>The guy pounds $alexa.name's asshole like an animal.</p>
<<media `"activities/peek/daphAlex/" + _activity + "3.jpg"`>>
<big>And she's lovin' it!</big>
<<btn>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom; !$jerk; $jerk+4" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>The guy is speeding up.</p>
<<dial "guy" "I'm cumming!">>
<<dial "alexa" "In my asshole!">>
<p>He pulls her closer. You can see his cock twitching, as he pumps his load into her butt.</p>
<<media `"activities/peek/daphAlex/" + _activity + "4.jpg"`>>
<p>Is that how they do...</p>
<big>...asshole bleaching?</big>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>$alexa.name sighs and moves away from the dude.</p>
<<dial "alexa" "You can go now.">>
<<dial "guy" "What the fuck?">>
<<dial "alexa" "Get the fuck out of here, or I'll start screaming that you raped me.">>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket jerkedoff+>>
<p>Meanwhile, $alexa.name also finishes, and moves away from the dude.</p>
<<dial "alexa" "You can go now.">>
<<dial "guy" "What the fuck?">>
<<dial "alexa" "Get the fuck out of here, or I'll start screaming that you raped me.">>
<p>He looks at her, shocked, but quickly does what he's told. He starts gathering his things.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<if $alexa.traitKnown != 1>>
<<set $caughtLinkMore = "#moreTrait">>
<</if>>
<<btn $caughtLinkMore "Close the doors" null "action">>
<<chunk null "#moreTrait">>
<p>It takes you a moment to get to your senses after what you just saw in $alexa.name's room. But as soon as you do - one thing becomes incredibly clear...</p>
<<media "shock.mp4">>
<big>$alexa.name is a <<print setup.charTraits.find(obj => {return obj.id === $alexa.trait}).name>>!</big>
<<btn null null "alexa.info+trait">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "alexa; while=masturbating">>
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
<<set _activity = ["alexa_masturbating0_", "alexa_masturbating1_", "alexa_masturbating2_"].random()>>
/* Do HTML */
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $alexa.name is masturbating.</big>
<<media `"activities/peek/daphAlex/" + _activity + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can stay and watch, but if you get caught, $alexa.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Stay and watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the crack to see better...</p>
<<media `"activities/peek/daphAlex/" + _activity + "0.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<btn $caughtLink "Stay and watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphAlex/" + _activity + "1.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom; !$jerk; $jerk+2" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphAlex/" + _activity + "2.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+3" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphAlex/" + _activity + "3.jpg"`>>
<<btn>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom; !$jerk; $jerk+4" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphAlex/" + _activity + "4.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>She licks her fingers and smiles.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket jerkedoff+>>
<p>$alexa.name also finishes. She licks her fingers and smiles.</p>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<if $alexa.traitKnown != 1>>
<<set $caughtLinkMore = "#moreTrait">>
<</if>>
<<btn $caughtLinkMore "Close the doors" null "action">>
<<chunk null "#moreTrait">>
<p>It takes you a moment to get to your senses after what you just saw in $alexa.name's room. But as soon as you do - one thing becomes incredibly clear...</p>
<<media "shock.mp4">>
<big>$alexa.name is a <<print setup.charTraits.find(obj => {return obj.id === $alexa.trait}).name>>!</big>
<<btn null null "alexa.info+trait">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "alexa; while=sleep">>
<<chunks>>
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $alexa.name is sleeping.</big>
<<media "activities/peek/daphAlex/alexa_sleep.jpg" "si3">>
<<btn null null null "si3">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "while=nothing">>
<<chunks>>
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">Unfortunately - you don't see a thing.</big>
<<btn $curLoc "Move away" null "action si3">>
<</chunks>>
<</events>>/* btnImg */
/* Generating a location button. Arguments: location id, prerequisites. */
<<widget "btnImg">>
/* Vars */
<<set _btnId = $args[0] ? $args[0] : "">>
<<set _btnStats = $args[1] ? $args[1] : "">>
<<set _btnName = null>>
<<set _btnLink = null>>
<<set _childId = null>>
<<set _locChars = []>>
/* Add the door condition if needed (always is a special condition that ignores the doors) */
<<if _btnStats == "" || (_btnStats.indexOf("always") == -1 && _btnStats.indexOf("open") == -1 && _btnStats.indexOf("closed") == -1 && _btnStats.indexOf("locked") == -1)>>
<<if _btnStats != "">>
<<set _btnStats = _btnStats + "; open">>
<<elseif _btnStats == "">>
<<set _btnStats = "open">>
<</if>>
<</if>>
/* We need to check if we're linking to an earlyAccess or todo content, and if so - override the link */
<<if tags(_btnId).contains("earlyAccess") && !$supporter && !$test>>
<<set _btnLink = "earlyAccess">>
<<elseif tags(_btnId).contains("todo") && !$test>>
<<set _btnLink = "todo">>
<<else>>
<<set _btnLink = _btnId>>
<</if>>
/* Check if the button prerequisites are met */
<<prereq _btnStats>>
<<if $prereq == 1>>
/* Search for this location within a location array and collect data */
/* 0.3.53 experimental - we now show the chars not only in the location, but also in child locations, so there's no break after we find match, we have to go through all the locations - check if it's not slowing the game down too much */
<<for _i = 0; _i < setup.locations.length; _i++>>
/* Go forward if we found the current location, or the location that has this location as parent */
<<if setup.locations[_i].id == _btnId || setup.locations[_i].parent == _btnId>>
/* Check if the location prerequisites are met */
<<prereq setup.locations[_i].prereq>>
<<if $prereq == 1>>
/* Save the location name */
<<if setup.locations[_i].id == _btnId>>
<<set _btnName = setup.locations[_i].name>>
<</if>>
/* If we're in a child location, we need to save id */
<<if setup.locations[_i].id != _btnId>>
<<set _childId = setup.locations[_i].id>>
<</if>>
/* Check a given location for characters based on schedule */
<<for _sch = 0; _sch < $schedTemp.length; _sch++>>
<<if $schedTemp[_sch][1] == _btnId || $schedTemp[_sch][1] == _childId>>
/* Go forward if the char is not already in the array, we know the char, and it's not an NPC */
<<if _locChars.indexOf($schedTemp[_sch][0]) == -1 && State.getVar('$' + $schedTemp[_sch][0] + ".met") == 1 && State.getVar('$' + $schedTemp[_sch][0] + ".type") != "npc">>
/* Check when the character is in a given location */
<<if $schedTemp[_sch][2] == "workdays">>
<<set _days = setup.workdays>>
<<elseif $schedTemp[_sch][2] == "weekend">>
<<set _days = setup.weekend>>
<<elseif $schedTemp[_sch][2] == null>>
<<set _days = setup.days>>
<<else>>
<<set _days = $schedTemp[_sch][2]>>
<</if>>
<<if $schedTemp[_sch][3] == "dayhours">>
<<set _hours = setup.dayhours>>
<<elseif $schedTemp[_sch][3] == "nighthours">>
<<set _hours = setup.nighthours>>
<<elseif $schedTemp[_sch][3] == null>>
<<set _hours = setup.periods>>
<<else>>
<<set _hours = $schedTemp[_sch][3]>>
<</if>>
/* Print avatars for characters in location */
<<if _days.indexOf($today) != -1 && _hours.indexOf($now) != -1>>
<<set _locChars.push($schedTemp[_sch][0])>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</if>>
<</for>>
/* Go forward if all the prereqs are met */
<<if _btnName>>
/* Exception - if it's garden, we need to reload pic based on the counter and quests */
<<if _btnId == "daphGard">>
<<set _curGarden = $player.quests.find(obj => {return obj.id === "daphFixGarden"})>>
<<set _curPool = $player.quests.find(obj => {return obj.id === "alexaPool"})>>
<<if $cleanGarden < 7 && _curPool && _curPool.done == 1>>
<<set _btnIdSml = "_sml_pool.jpg">>
<<elseif $cleanGarden < 14 && _curGarden && _curGarden.done == 1>>
<<set _btnIdSml = "_sml_grass.jpg">>
<</if>>
<<else>>
<<set _btnIdSml = "_sml.jpg">>
<</if>>
/* Start the HTML */
<a data-passage="_btnLink" class="btnImg">
<p class="btnText">_btnName</p>
/* Print avatars (max 3) for characters in location */
<<for _ch = 0; _ch < _locChars.length; _ch++>>
<img @src="setup.ImagePath+'characters/'+_locChars[_ch]+'/avatar.jpg'" class="btnAvatar">
<<if _ch == 2>>
<<break>>
<</if>>
<</for>>
/* Print the image */
<img class="btnImage" @src="setup.ImagePath+'locations/'+_btnId+'/'+_btnIdSml">
</a>
<</if>>
<</if>>
<</widget>><<chunks>>
<<menu>>
/* Locations */
<<btnImg "daphHouse">> /*[[daphHouse]]*/
<<btnImg "bridHouse">> /*[[bridHouse]]*/
<<btnImg "park">> /*[[park]]*/
<<btnImg "gym">> /*[[gym]]*/
<<btnImg "church">> /*[[church]]*/
<<btnImg "localStore">> /*[[localStore]]*/
<<btnImg "cemetery">> /*[[cemetery]]*/
/* Travel */
<hr class="marginTop10px">
<<btn "travel" "Travel to the City Center" "cash-2; $travelTo+areaCity" "travel">> /*[[areaCity]]*/
<<btn "travel" "Travel to the Outskirts" "cash-2; $travelTo+areaOutskirts" "travel marginTop10px">> /*[[areaOutskirts]]*/
<</chunks>><<events "show">>
<<EVENT "day=Sunday; period=night">> /* This needs a better link than that */
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
/* Turn off until there's a caught event
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
*/
<<set _activity = ["daphne_sex0_", "daphne_sex1_", "daphne_sex2_", "daphne_sex3_", "daphne_sex4_", "daphne_sex5_", "daphne_sex6_"].random()>>
/* Do HTML */
<p class="fi0 center">You look through the hole...</p>
<<media `"activities/peek/hole.mp4"` "si1">>
<big class="fi3 center">You see that $daphne.name is being rough fucked.</big>
<<media `"activities/peek/daphGuest/" + _activity + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can watch, but if you get caught, $daphne.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love+1" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the floor to see better...</p>
<<media `"activities/peek/daphGuest/" + _activity + "0.jpg"`>>
<<menu>>
<<btn $caughtLink "Watch more" null "action">>
<<btn $caughtLink "Watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphGuest/" + _activity + "1.jpg"`>>
<<menu>>
<<btn $caughtLink "Watch more" null "action">>
<<delayer>><<btn $caughtLink "Watch while jerking off" "dom+1; !$jerk; $jerk+2" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphGuest/" + _activity + "2.jpg"`>>
<<menu>>
<<btn $caughtLink "Watch more" null "action">>
<<delayer>><<btn $caughtLink "Watch while jerking off" "dom+1; !$jerk; $jerk+3" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<<media `"activities/peek/daphGuest/" + _activity + "3.jpg"`>>
<<btn>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Watch more" null "action">>
<<delayer>><<btn $caughtLink "Watch while jerking off" "dom+1; !$jerk; $jerk+4" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>Meanwhile, $daphne.name moans with pain and pleasure.</p>
<<media `"activities/peek/daphGuest/" + _activity + "4.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>$daphne.name sighs, as she comes back to reality.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket "jerkedoff+">>
<p>$daphne.name sighs, as she comes back to reality.</p>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<btn $curLoc "Move away" null "action">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "day!=Sunday">> /* TODO combine with while */
<<chunks>>
<p class="fi0 center">You look through the hole...</p>
<<media `"activities/peek/hole.mp4"` "si1">>
<big class="fi3 center">Unfortunately - you don't see a thing.</big>
<p class="fi3">Dude, I think you need to try it when $daphne.name is in the cellar!</p>
<big class="fi3">Maybe try on ''Sunday''?</big>
<<btn $curLoc "Move away" null "action si3">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "period!=night">> /* TODO combine with while */
<<chunks>>
<p class="fi0 center">You look through the hole...</p>
<<media `"activities/peek/hole.mp4"` "si1">>
<big class="fi3 center">Unfortunately - you don't see a thing.</big>
<p class="fi3">Dude, I think you need to try it when $daphne.name is in the cellar!</p>
<big class="fi3">Maybe try in the ''night''?</big>
<<btn $curLoc "Move away" null "action si3">>
<</chunks>>
<</events>><<events "show">>
<<EVENT "randLow">>
<<set $dream = "fucked">>
<<chunks>>
/* Prepare the dream */
<<set _dreams to clone(setup.dreams)>>
<<set _dreamsArray to []>>
<<for _d to 0; _d < _dreams.length; _d++>>
<<set _randD to Math.floor(Math.random()*(_dreams[_d].length))>>
<<set _dreamsArray.push({
rand: _randD,
text: _dreams[_d][_randD],
dial: _dreams[_d][_randD].replace(/your/gi, "my")
})>>
<<set _dreams[_d].splice(_randD, 1)>>
<</for>>
<<set _reply = ["Still better love story than Twilight!", "Living the dream? I hope not.", "Don't give up on your dreams. Keep sleeping!"].random()>>
<big class="center fi0">You close your eyes...</big>
<p class="center fi1">And slowly drift away...</p>
<p class="sml center fi2">Into a fucked up dream...</p>
<div id="dream">
<p class="fi3">You are _dreamsArray[0].text, and it's _dreamsArray[1].text. You are strolling around _dreamsArray[2].text in _dreamsArray[3].text, when suddenly - you notice a _dreamsArray[4].text. You walk out to her to get a closer look at her _dreamsArray[5].text.</p>
<<dial "player" _dreamsArray[6].text "fi3">>
<p class="fi3">You tell her.</p>
<<dial "guy" _dreamsArray[7].text "fi3">>
<p class="fi3">She replies.</p>
<big class="fi3">And then you fuck.</big>
<<media "mindblown.mp4" "fi3">>
</div>
<div id="cheater" style="display: none;" class="fi0">
<<media "cheater.mp4">>
</div>
<<dial "player" _reply "fi3">>
<<btn null null null "si3">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "randHigh">>
<<set $dream = "wet">>
<<chunks>>
<big class="center fi0">You close your eyes...</big>
<p class="center fi1">And slowly drift away...</p>
<p class="sml center fi2">Into a wet dream...</p>
<<media `"activities/sleep/" + $player.traitShrt +"/" + $curRand + ".mp4"` "si3">>
<<if $player.trait == "satan">><<dial "player" "Oh, fuck it. If it's the bottom, then I might as well enjoy it. Here, little calamari, daddy looove the tentacles!" "fi4">>
<<elseif $player.trait == "toxic">><<dial "player" "What have I done to myself? I need to get back on the righteous path, or I'm doomed!" "fi4">>
<<elseif $player.trait == "bully">><<dial "player" "Sooo... Now I'm dreaming about vampires? Oh, whatever. Here, baby, suck the blood out of my dick." "fi4">>
<<elseif $player.trait == "jerk">><<dial "player" "Those dreams are becoming weirder and weirder. But I'm still onboard with this shit!" "fi4">>
<<elseif $player.trait == "nerd">><<dial "player" "Justice served, baby!" "fi4">>
<<elseif $player.trait == "vegan">><<dial "player" "I wonder if it's still domination, when you're being dominated by a cucumber?" "fi4">>
<<elseif $player.trait == "hippie">><<dial "player" "Take it for the mother Earth you whore!" "fi4">>
<<elseif $player.trait == "messiah">><<dial "player" "Good habits make me hard." "fi4">>
<<elseif $player.trait == "alpha">><<dial "player" "Ommmm...." "fi4">>
<<else>><<dial "player" "Oh yeah, baby! Give it to me!" "fi4">>
<</if>>
<<btn null null null "si5">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "priority; $lvlup=1">>
<<set $dream = "wet">>
<<chunks>>
<big class="center fi0">You close your eyes...</big>
<p class="center fi1">And slowly drift away...</p>
<p class="sml center fi2">Into a wet dream...</p>
<<media `"activities/sleep/" + $player.traitShrt +"/" + $curRand + ".mp4"` "si3">>
<<if $player.trait == "satan">><<dial "player" "Oh, fuck it. If it's the bottom, then I might as well enjoy it. Here, little calamari, daddy looove the tentacles!" "fi4">>
<<elseif $player.trait == "toxic">><<dial "player" "What have I done to myself? I need to get back on the righteous path, or I'm doomed!" "fi4">>
<<elseif $player.trait == "bully">><<dial "player" "Sooo... Now I'm dreaming about vampires? Oh, whatever. Here, baby, suck the blood out of my dick." "fi4">>
<<elseif $player.trait == "jerk">><<dial "player" "Those dreams are becoming weirder and weirder. But I'm still onboard with this shit!" "fi4">>
<<elseif $player.trait == "nerd">><<dial "player" "Justice served, baby!" "fi4">>
<<elseif $player.trait == "vegan">><<dial "player" "I wonder if it's still domination, when you're being dominated by a cucumber?" "fi4">>
<<elseif $player.trait == "hippie">><<dial "player" "Take it for the mother Earth you whore!" "fi4">>
<<elseif $player.trait == "messiah">><<dial "player" "Good habits make me hard." "fi4">>
<<elseif $player.trait == "alpha">><<dial "player" "Ommmm...." "fi4">>
<<else>><<dial "player" "Oh yeah, baby! Give it to me!" "fi4">>
<</if>>
<<btn null null null "si4">>
<</chunks>>
<<if $lvlup>>
<<include "lvlup">>
<</if>>
<</events>><<chunks>>
<big class="center fi0">You open up your laptop...</big>
<p class="center fi1">Type the name of your favorite porn site...</p>
<div class="si2">
/* Display toys menu */
<<set _toys = ["paul_dildo", "dildo", "cucumber", "crucifix"]>>
<<for _ts = 0; _ts < _toys.length; _ts++>>
<<if $player.itemsList && $player.itemsList.indexOf(_toys[_ts]) != -1>>
<<set _displayToys = 1>>
<<set _playerlvl = $player.lvl > 0 ? $player.lvl : 1>>
<<break>>
<</if>>
<</for>>
<<if _displayToys == 1>>
<<menu null "Choose a toy" "toys">>
<<if $player.itemsList.indexOf("paul_dildo") != -1 || $player.itemsList.indexOf("dildo") != -1>>
<<btn "#dildo" "Put a dildo up your ass" "love+2" "yieldsHide item">>
<</if>>
<<if $player.itemsList.indexOf("cucumber") != -1>>
<<btn "#cucumber" "Put a cucumber up your ass" "love+3" "yieldsHide item">>
<</if>>
<<if $player.itemsList.indexOf("crucifix") != -1>>
<<btn "#crucifix" "Put a crucifix up your ass" "love+5" "yieldsHide item">>
<</if>>
<</if>>
<br class="clear">
<br class="clear">
/* Load the category buttons */
<<set _masturbationCat = clone(setup.sexCat)>>
/* Display genres menu */
<<menu null "Choose a porn genre" "masturbation">>
<<for _mc = 0; _mc < _masturbationCat.length; _mc++>>
<<set _masturbationCatKnown = null>>
<<for _k = 0; _k < setup.kamasutra.length; _k++>>
/* Check if the player knows the position */
<<set _current = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
<<set _curData = $player.kamasutra.find(x => x.id === setup.kamasutra[_k].id)>>
<<if !_masturbationCatKnown && _current != -1 && _curData.known == 1 && setup.kamasutra[_k].sexCat.indexOf(_masturbationCat[_mc].id) != -1>>
/* Print the genre button */
<<btn `"#" + _masturbationCat[_mc].id` `_masturbationCat[_mc].name + " porn"` `_masturbationCat[_mc].group + "+; jerkedoff+"` "activ yieldsHide">>
<<set _masturbationCatKnown = 1>>
<</if>>
<</for>>
<<if !_masturbationCatKnown>>
<div class="btn disabled item"><span class="btnText">_masturbationCat[_mc].name porn</span></div>
<</if>>
<</for>>
/* Shuffle the vids for later */
<<set _masturbationVids = setup.kamasutra.shuffle()>>
<br class="clear">
</div>
<<chunk null "#dildo">>
<p>You pull out a dildo.</p>
<big>And slowly push it up your ass.</big>
<<dial "player" "I'm a bad boy!">>
<<media `"activities/masturbation/dildo/" + _playerlvl + "/" + random(1,10) + ".mp4"`>>
<big>Time to start the porn!</big>
/* Display genres menu */
<<menu null "Choose a porn genre" "masturbation">>
<<for _mc = 0; _mc < _masturbationCat.length; _mc++>>
<<set _masturbationCatKnown = null>>
<<for _k = 0; _k < setup.kamasutra.length; _k++>>
/* Check if the player knows the position */
<<set _current = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
<<set _curData = $player.kamasutra.find(x => x.id === setup.kamasutra[_k].id)>>
<<if !_masturbationCatKnown && _current != -1 && _curData.known == 1 && setup.kamasutra[_k].sexCat.indexOf(_masturbationCat[_mc].id) != -1>>
/* Print the genre button */
<<btn `"#" + _masturbationCat[_mc].id` `_masturbationCat[_mc].name + " porn"` `_masturbationCat[_mc].group + "+; jerkedoff+"` "activ yieldsHide">>
<<set _masturbationCatKnown = 1>>
<</if>>
<</for>>
<<if !_masturbationCatKnown>>
<div class="btn disabled item"><span class="btnText">_masturbationCat[_mc].name porn</span></div>
<</if>>
<</for>>
<br class="clear">
<<chunk null "#cucumber">>
<p>You pull out a cucumber.</p>
<big>And slowly push it up your ass.</big>
<<dial "player" "Veggies for the win!">>
<<media `"activities/masturbation/cucumber/" + random(1,5) + ".mp4"`>>
<big>Time to start the porn!</big>
/* Display genres menu */
<<menu null "Choose a porn genre" "masturbation">>
<<for _mc = 0; _mc < _masturbationCat.length; _mc++>>
<<set _masturbationCatKnown = null>>
<<for _k = 0; _k < setup.kamasutra.length; _k++>>
/* Check if the player knows the position */
<<set _current = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
<<set _curData = $player.kamasutra.find(x => x.id === setup.kamasutra[_k].id)>>
<<if !_masturbationCatKnown && _current != -1 && _curData.known == 1 && setup.kamasutra[_k].sexCat.indexOf(_masturbationCat[_mc].id) != -1>>
/* Print the genre button */
<<btn `"#" + _masturbationCat[_mc].id` `_masturbationCat[_mc].name + " porn"` `_masturbationCat[_mc].group + "+; jerkedoff+"` "activ yieldsHide">>
<<set _masturbationCatKnown = 1>>
<</if>>
<</for>>
<<if !_masturbationCatKnown>>
<div class="btn disabled item"><span class="btnText">_masturbationCat[_mc].name porn</span></div>
<</if>>
<</for>>
<br class="clear">
<<chunk null "#crucifix">>
<p>You pull out a crucifix.</p>
<big>And slowly push it up your ass.</big>
<<dial "player" "Sweet Jesus!">>
<p>It's so rough...</p>
<<media `"activities/masturbation/crucifix/" + random(1,4) + ".mp4"`>>
<big>Time to start the porn!</big>
/* Display genres menu */
<<menu null "Choose a porn genre" "masturbation">>
<<for _mc = 0; _mc < _masturbationCat.length; _mc++>>
<<set _masturbationCatKnown = null>>
<<for _k = 0; _k < setup.kamasutra.length; _k++>>
/* Check if the player knows the position */
<<set _current = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
<<set _curData = $player.kamasutra.find(x => x.id === setup.kamasutra[_k].id)>>
<<if !_masturbationCatKnown && _current != -1 && _curData.known == 1 && setup.kamasutra[_k].sexCat.indexOf(_masturbationCat[_mc].id) != -1>>
/* Print the genre button */
<<btn `"#" + _masturbationCat[_mc].id` `_masturbationCat[_mc].name + " porn"` `_masturbationCat[_mc].group + "+; jerkedoff+"` "activ yieldsHide">>
<<set _masturbationCatKnown = 1>>
<</if>>
<</for>>
<<if !_masturbationCatKnown>>
<div class="btn disabled item"><span class="btnText">_masturbationCat[_mc].name porn</span></div>
<</if>>
<</for>>
<br class="clear">
<<chunk null "#anal">>
<big>You select Anal porn.</big>
<<for _mv = 0; _mv < _masturbationVids.length; _mv++>>
<<if _masturbationVids[_mv].sexCat.indexOf("anal") != -1>>
<<media `"sex/" + _masturbationVids[_mv].id + "/" + random(0,9) + ".mp4"`>>
<<break>>
<</if>>
<</for>>
<<dial "player" "That's a beautiful asshole right there!">>
<<btn>>
<<chunk null "#classic">>
<big>You select Classic porn.</big>
<<for _mv = 0; _mv < _masturbationVids.length; _mv++>>
<<if _masturbationVids[_mv].sexCat.indexOf("classic") != -1>>
<<media `"sex/" + _masturbationVids[_mv].id + "/" + random(0,9) + ".mp4"`>>
<<break>>
<</if>>
<</for>>
<<dial "player" "Nothing better than a bit of classic pussy pounding!">>
<<btn>>
<<chunk null "#fetish">>
<big>You select Hardcore porn.</big>
<<for _mv = 0; _mv < _masturbationVids.length; _mv++>>
<<if _masturbationVids[_mv].sexCat.indexOf("fetish") != -1>>
<<media `"sex/" + _masturbationVids[_mv].id + "/" + random(0,9) + ".mp4"`>>
<<break>>
<</if>>
<</for>>
<<dial "player" "Oh yea, I'm a perv!">>
<<btn>>
<<chunk null "#handworks">>
<big>You select Handworks porn.</big>
<<for _mv = 0; _mv < _masturbationVids.length; _mv++>>
<<if _masturbationVids[_mv].sexCat.indexOf("handworks") != -1>>
<<media `"sex/" + _masturbationVids[_mv].id + "/" + random(0,9) + ".mp4"`>>
<<break>>
<</if>>
<</for>>
<<dial "player" "Oh yea, that's the shit!">>
<<btn>>
<<chunk null "#oral">>
<big>You select Oral porn.</big>
<<for _mv = 0; _mv < _masturbationVids.length; _mv++>>
<<if _masturbationVids[_mv].sexCat.indexOf("oral") != -1>>
<<media `"sex/" + _masturbationVids[_mv].id + "/" + random(0,9) + ".mp4"`>>
<<break>>
<</if>>
<</for>>
<<dial "player" "Yeah... do it with your mouth... Oh yeaa....!">>
<<btn>>
<<chunk null "#rough">>
<big>You select Rough porn.</big>
<<for _mv = 0; _mv < _masturbationVids.length; _mv++>>
<<if _masturbationVids[_mv].sexCat.indexOf("rough") != -1>>
<<media `"sex/" + _masturbationVids[_mv].id + "/" + random(0,9) + ".mp4"`>>
<<break>>
<</if>>
<</for>>
<<dial "player" "Smack that bitch, yeah!">>
<<btn>>
<</chunks>>/* Book quotes */
<<set _books to [
{
match: "satan",
quote: "There is an idea of a Patrick Bateman, some kind of abstraction, but there is no real me, only an entity, something illusory, and though I can hide my cold gaze and you can shake my hand and feel flesh gripping yours and maybe you can even sense our lifestyles are probably comparable: I simply am not there.",
title: "Bret Easton Ellis, \"American Psycho\"",
dial: "Does sucking out souls count as a blowjob?"
},
{
match: "satan",
quote: "And he that sitteth on the throne said, Behold, I make all things new. And he saith, Write: for these words are faithful and true. And he said unto me, They are come to pass. I am the Alpha and the Omega, the beginning and the end.",
title: "Revelation 21:5",
dial: "Does sucking out souls count as a blowjob?"
},
{
match: "satan",
quote: "All men are mad in some way or another, and inasmuch as you deal discreetly with your madmen, so deal with God's madmen too, the rest of the world.",
title: "Bram Stoker, \"Dracula\"",
dial: "Does sucking out souls count as a blowjob?"
},
{
match: "toxic",
quote: "This letter really touched my heart. Sabrina says when she lost all her hair during chemo, she wore the cap I gave her.",
title: "Justin Bieber, \"First Step 2 Forever\"",
dial: "I like my women like I like my liquor - gone by morning."
},
{
match: "toxic",
quote: "I hope she'll be a fool -- that's the best thing a girl can be in this world, a beautiful little fool.",
title: "F. Scott Fitzgerald, \"The Great Gatsby\"",
dial: "I like my women like I like my liquor - gone by morning"
},
{
match: "toxic",
quote: "Anastasia, you should steer clear of me. I’m not the man for you - he whispers.",
title: "E.L. James, \"Fifty Shades Trilogy Bundle\"",
dial: "I like my women like I like my liquor - gone by morning"
},
{
match: "bully",
quote: "The man who alters his way of thinking to suit others is a fool.",
title: "Marquis de Sade, \"Justine, Philosophy in the Bedroom, and Other Writings\"",
dial: "Rules are for pussies, and I'm the hardest dick in town."
},
{
match: "bully",
quote: "Third, and finally, if you want people to believe the system is fair and effective, it’s essential to be tough on the most powerful, profitable, and well-known jerks. If you enforce the rule only with the weak performers, people who are easily replaceable, or who deliver bad news and have the gumption to disagree with superiors—and you allow powerful assholes to run roughshod over anyone they please—people will smell your hypocritical bullshit from a mile away.",
title: "Robert I. Sutton, \"The Asshole Survival Guide: How to Deal with People Who Treat You Like Dirt\"",
dial: "Rules are for pussies, and I'm the hardest dick in town."
},
{
match: "bully",
quote: "I am always saying \"Glad to've met you\" to somebody I'm not at all glad I met. If you want to stay alive, you have to say that stuff, though.",
title: "J.D. Salinger, \"The Catcher in the Rye\"",
dial: "Rules are for pussies, and I'm the hardest dick in town."
},
{
match: "jerk",
quote: "You’ve just got to see more of her long lean legs. Her fine rounded breasts. Her high, firm behind. For an instant you even consider rape.",
title: "Eric Weber, \"How to Pick Up Girls\"",
dial: "In life it's either rape or be raped, and I know on which end of the dick I want to be."
},
{
match: "jerk",
quote: "What about God? The idea embarrassed him. It was only in moments of absolute fear that he had ever thought about God and prayed to him, always embarrassed because he did not believe and felt so hypocritical when he prayed out of fear, as if in spite of his disbelief there might be God after all, God who could be fooled by a hypocrite. When he was a child, then he believed. He certainly did believe when he was a child. How did it go, the nightly Act of Contrition? The words came hesitantly, unfamiliarly to him. Oh my God, I am heartily sorry for—For what?",
title: "David Morrell, \"First Blood\"",
dial: "In life it's either rape or be raped, and I know on which end of the dick I want to be."
},
{
match: "jerk",
quote: "The more I see of what you call civilization, the more highly I think of what you call savagery!",
title: "Robert E. Howard, \"King Kull\"",
dial: "In life it's either rape or be raped, and I know on which end of the dick I want to be."
},
{
match: "beta",
quote: "Of all creatures that breathe and move upon the earth, nothing is bred that is weaker than man.",
title: "Homer, \"The Odyssey\" & \"The Iliad\"",
dial: "The only Homer I know is Homer Simpson."
},
{
match: "beta",
quote: "It's a dangerous business, Frodo, going out your door. You step onto the road, and if you don't keep your feet, there's no knowing where you might be swept off to.",
title: "J.R.R. Tolkien, \"The Lord of the Rings\"",
dial: "I misread the title as //Lord of the Cockrings// and read through 10000 pages waiting for Sauron to buttfuck a hobbit. What a disappointment."
},
{
match: "beta",
quote: "There is never a second opportunity to make a first impression.",
title: "Andrzej Sapkowski, \"Sword of Destiny\"",
dial: "This Witcher dude is just like me but blonde."
},
{
match: "nerd",
quote: "Seek freedom and become captive of your desires. Seek discipline and find your liberty.",
title: "Frank Herbert, \"Chapterhouse: Dune\"",
dial: "My new hobby is fighting for the innocent!"
},
{
match: "nerd",
quote: "You people don't know what the truth is! It's there, just under their bullshit, but you never look! That's what I hate most about this fucking city-- LIES ARE NEWS AND TRUTH IS OBSOLETE!",
title: "Warren Ellis, \"Transmetropolitan\"",
dial: "My new hobby is fighting for the innocent!"
},
{
match: "nerd",
quote: "It was a bright cold day in April, and the clocks were striking thirteen.",
title: "George Orwell, \"1984\"",
dial: "My new hobby is fighting for the innocent!"
},
{
match: "vegan",
quote: "It is a great misfortune to be alone, my friends; and it must be believed that solitude can quickly destroy reason.",
title: "Jules Verne, \"The Mysterious Island\"",
dial: "Woo woo! Here comes the depression!"
},
{
match: "vegan",
quote: "As long as Man continues to be the ruthless destroyer of lower living beings, he will never know health or peace. For as long as men massacre animals, they will kill each other. Indeed, he who sows the seed of murder and pain cannot reap joy and love.",
title: "Pythagoras",
dial: "Woo woo! Here comes the depression!"
},
{
match: "vegan",
quote: "All animals are equal, but some animals are more equal than others.",
title: "George Orwell, \"Animal Farm\"",
dial: "Woo woo! Here comes the depression!"
},
{
match: "hippie",
quote: "These Romans are crazy!",
title: "René Goscinny & Albert Uderzo, \"Asterix\"",
dial: "That's just like... your opinion, man."
},
{
match: "hippie",
quote: "From the beginning men used God to justify the unjustifiable.",
title: "Salman Rushdie, \"The Satanic Verses\"",
dial: "That's just like... your opinion, man."
},
{
match: "hippie",
quote: "There is no greater luxury than meditation. Meditation is the last luxury, because it is the ultimate love affair.",
title: "Osho, \"Book of Wisdom\"",
dial: "That's just like... your opinion, man."
},
{
match: "messiah",
quote: "No one can serve two masters, for either he will hate the one and love the other, or he will be devoted to the one and despise the other. You cannot serve God and money.",
title: "Matthew 6:24",
dial: "I should write an autobiography!"
},
{
match: "messiah",
quote: "The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.",
title: "Terry Pratchett, \"Diggers\"",
dial: "I should write an autobiography!"
},
{
match: "messiah",
quote: "Hence I have no mercy or compassion in me for a society that will crush people, and then penalize them for not being able to stand up under the weight.",
title: "Malcolm X, \"The Autobiography of Malcolm X\"",
dial: "I should write an autobiography!"
},
{
match: "alpha",
quote: "A purpose of human life, no matter who is controlling it, is to love whoever is around to be loved.",
title: "Kurt Vonnegut, \"The Sirens of Titan\"",
dial: "Now I understand."
},
{
match: "alpha",
quote: "Intelligence is the ability of a living creature to perform pointless or unnatural acts.",
title: "Arkady Strugatsky, \"Roadside Picnic\"",
dial: "Now I understand."
},
{
match: "alpha",
quote: "He was going to live forever, or die in the attempt.",
title: "Joseph Heller, \"Catch-22\"",
dial: "Now I understand."
}
]>>
/* Select book quotes */
<<set _bookRand to random(0, 2)>>
<<for _i to 0; _i < _books.length; _i++>>
<<if _books[_i].match == $player.traitShrt>>
<<set _book = _i + _bookRand>>
<<break>>
<</if>>
<</for>>
<<chunks>>
<p class="bookQuote fi0">“<<print _books[_book].quote>>”</p>
<p class="bookTitle fi2"><<print _books[_book].title>></p>
<<media `"activities/read/" + $player.traitShrt + ".mp4"` "si3">>
<<dial "player" _books[_book].dial "fi4">>
<<btn null null null "si5">>
<</chunks>><<chunks>>
<big class="center fi0">You pull out a dumbbell from under the bed...</big>
<p class="center fi1">You grab it firmly...</p>
<<dial "player" "To crush your enemies, see them driven before you, and to hear the lamentations of their women!" "fi2">>
<<media `"activities/train/" + $player.traitShrt + ".mp4"` "si4">>
<<btn null null null "si5">>
<</chunks>><<events>>
<<EVENT "!daphne; $daphne.met">>
<<chunks>>
<<media "interruption.mp4">>
<p>The doors open and ''$daphne.name'' enters the room.</p>
<<media "daphne" "portrait">>
<<dial "daphne" "Hey, I forgot to tell you--">>
<p>$daphne.name notices a book in your hands. She smiles.</p>
<<dial "daphne" "Ohhh, nice to see you read something for a change! I always say - smart is sexy!">>
<<menu>>
<<btn null "Then you must be veeery smart!" "daphne.dom" "dialog">>
<<btn null "This book is so good! You'd love it!" "daphne.love" "dialog">>
<<chunk>>
<<dial "daphne" "Haha, thanks! I just wanted to tell you that if you need some cash, there's always some chores around the house that you might do.">>
<p>You have a feeling she's just looking for someone to do it for her. But still, it's hard to say no to those melons.</p>
<<dial "player" "Oh, thanks, good to know!">>
<p>$daphne.name smiles.</p>
<<dial "daphne" "I knew I can count on you.">>
<p>She winks and leaves, closing the doors behind her.</p>
<<btn $curLoc>>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "!alexa; $alexa.met">>
<<chunks>>
<<media "interruption.mp4">>
<p>Suddenly the door slams into the wall as ''$alexa.name'' enters the room.</p>
<<media "alexa" "portrait">>
<<dial "alexa" "Yo dweeb, I need you to do something for me.">>
<<dial "player" "Y-Yes?">>
<<dial "alexa" "I'm going out tonight and I want you to do my homework.">>
<p>$alexa.name throws her notebook at you.</p>
<<dial "player" "B-but--">>
<<if $alexa.status <= 1>>
<<dial "alexa" "What?! I'm not going to show you my butt, you little perv!">>
<<dial "player" "I didn't mean--">>
<<dial "alexa" "But I guess I could show you my tits. Deal?">>
<<elseif $alexa.status == 2>>
<<dial "alexa" "What?! I'm not going to show you my butt, you little perv!">>
<<dial "player" "I didn't mean--">>
<<dial "alexa" "But I guess I could show you the little flower between my legs. Deal?">>
<<elseif $alexa.status == 3>>
<<dial "alexa" "You drive a hard bargain, but I agree.">>
<<dial "player" "Whaat?">>
<<dial "alexa" "I'll show you my butt if you do my homework. Deal?">>
<<else>>
<<dial "alexa" "Ok, deal.">>
<<dial "player" "What deal?">>
<<dial "alexa" "I'll let you touch my butt!">>
<</if>>
<<menu>>
<<btn "#alexaDeal" "This is the best deal in the history of deals, maybe ever!" "alexa.dom" "dialog">>
<<btn "#alexaPresent" "You don't have to show me anything - I'll do it as a gift." "alexa.love" "dialog">>
<<chunk null "#alexaDeal">>
<p>$alexa.name smiles. She looks you in the eyes, and slowly pulls her t-shirt up, revealing a pair of perky tits.</p>
<<media "activities/read/alexa_tits.jpg">>
<<dial "alexa" "Do you like 'em?">>
<p>They might be small, but they sure look great. Now when you think about it, you wouldn't change anything - this girl is perfect. She's an angel.</p>
<<btn>>
<<chunk "alexa.status=2">>
<p>$alexa.name continues her show. She lowers herself slowly, looking you right in the eyes, and spreading her legs.</p>
<<media "activities/read/alexa_pussy.jpg">>
<<dial "alexa" "And what about this?">>
<p>You're asking yourself is it getting hot in here? The answer is //no//. It's what they do to us. At this point in time your entire attention is on this girl. And even more accurately - on her beautiful pussy.</p>
<<btn>>
<<chunk "alexa.status=3">>
<p>You want to say something, but she gives you a sign to stay quiet. She looks at you with those fuck-me eyes and turns around. As she bends over, she pulls her panties to the side, revealing Eldorado.</p>
<<media "activities/read/alexa_butt.jpg">>
<<dial "alexa" "Do you like it?">>
<p>How could you not to. But you're not able to answer. You're braindead</p>
<<dial "alexa" "I bet you'd give anything to put your finger in my cinnamon roll...">>
<<dial "player" "I would...">>
<<dial "alexa" "You'll have to work on it, kid.">>
<p>Oh, you'll work. You'll do anything to put your finger in there. And your tongue, and nose...</p>
<<btn>>
<<chunk "alexa.status=4">>
<p>She turns her head and quietly whispers.</p>
<<dial "alexa" "Sometimes I like to touch myself up there. Do you want to see?">>
<p>Why is that even a question? You nod your head so hard, that it nearly falls to the floor. $alexa.name licks her finger and slowly sticks it into her asshole, with a quiet mooooaan.</p>
<<media "activities/read/alexa_fingering.jpg">>
<<btn>>
<<chunk>>
<p>$alexa.name smiles seeing how completely out of order you become. The only thing you want right now is to praise the fuck god for revealing those fantastic sights to your eyes, yet with all the blood concentrating in the area of your waist, all that comes out of your mouth is...</p>
<<dial "player" "Uhhhh...">>
<p>But the show is over. $alexa.name covers herself and moves away.</p>
<<dial "alexa" "Snap out of it, you have a job to do, dweeb!">>
<p>She leaves the room.</p>
<<btn>>
<<chunk null "#alexaPresent">>
<<dial "alexa" "You'd do this for me?">>
<<dial "player" "For you? Anything.">>
<p>You can see that $alexa.name hesitates. She thinks for a second, before giving you a kiss.</p>
<<dial "alexa" "You deserved a freebie.">>
<p>She blows you a kiss.</p>
<<media "activities/read/alexa_kiss.jpg">>
<<dial "alexa" "Thank you... dweeb.">>
<p>She turns around and leaves.</p>
<<btn>>
<</chunks>>
<</events>>/* dial */
/* Draw dialog. Atributes - character id, dialog text, css classes. */
<<widget "dial">>
<<set _character = $args[0] ? $args[0] : "player">>
<<set _dialog = $args[1] ? $args[1] : "">>
<<set _classes = $args[2] ? $args[2] : "">>
/* Set path to character's avatar */
<<if _character == "player">>
<<set _avatar to 'characters/player/' + $player.trait + '/avatar.jpg'>>
<<else>>
<<set _avatar to 'characters/' + _character + '/avatar.jpg'>>
<</if>>
/* Select css depending on the character */
<<if _character == "player">>
<<set _classes = _classes + " yourDialog">>
<<else>>
<<set _classes = _classes + " otherDialog">>
<</if>>
<div @class="_classes">
<img @src="setup.ImagePath+_avatar">
<p>_dialog</p>
<br class="clear">
</div>
<</widget>>/* PassageHeader */
/* MARK THE START OF PASSAGE */
<<if $test && $testReport != "hide">>
<<script>>
console.log(" ");
console.log("⬜⬜⬜⬜⬜ PSG START ⬜⬜⬜⬜⬜");
<</script>>
<</if>>
/* CREATE CHARACTERS */
<<if setup.initChars || !previous()>>
/* Load the characters data and create vars. This needs to be on the passage, not StoryInit, otherwise the new chars get overwritten. More info in the included passage. I added previous because if player goes back in time to the first passage, storyinit does not reinitialize, and characters don't generate at all */
<<include "InitCharacters">>
<<set setup.initChars = null>>
<</if>>
/* BACKWARDS COMPATIBILITY */
/* After the characters are in place - we need to also check for compatibility issues, unless it's a dreamMode, in which case we want to wait until it's finished */
<<if setup.initComp && !$dreamMode>>
<script>compatibility();</script>
<<set setup.initComp = null>>
<</if>>
/* CHECK FAP CODE */
<<if !setup.initComp && setup.initCode && $fapCode>>
<<script>>checkCode(State.variables.fapCode);<</script>>
<<elseif !setup.initComp>>
<<set setup.initCode = null>>
<</if>>
/* PASSAGE VARS */
<<set $curPas = passage()>> /* Current passage */
<<set $curTags = tags($curPas)>> /* Twine tags of the current passage */
<<set $curQuest = null>> /* Saves the name of the included passage */
<<set $chunkId = null>> /* Sets the name of the current chunk */
<<set $chunksArr = []>> /* Gathers all the chunks, btns, vids and delayers */
<<set $popupsArr = []>> /* The same but for the popup */
<<set $delayersArr = []>> /* Gathers all the contents of delayers, to make chunksArr smaller */
<<set $chunkBtnNum = 1>> /* Used to set numbers to buttons */
<<set $chunkVidNum = 1>> /* Same for vids */
<<set $chunkDelNum = 1>> /* Same for delayers */
<<set $notifNum = 0>> /* Used to number the notifications */
<<set $eventStarted = 0>> /* Marks if the player started a random event using a button */
<<set $eventOn = 0>>
<<set $popupOn = 0>> /* Keeps the information about a popup being displayed */
<<set $popupPsg = null>> /* Keeps the information about a popup passage displayed */
<<set $chunksOn = 0>> /* Sets if the chunks was started or not (turns to 1 in chunks script) */
<<set $delayerOn = 0>> /* Sets if the delayer should start or not (turns to 1 in the second chunk) */
<<set $vidAutoplay = 1>> /* Used to autplay videos (turns to 0 in second chunk) */
<<set $hideDesc = null>> /* Used to hide description of location activities, quests, etc.. */
<<set $caught = null>> /* Used to determine if player was caught during the event */
<<if !$activitiesDone>>
<<set $activitiesDone = []>> /* Gathers all the activities that was done during the day */
<</if>>
/* We need to define current and previous location, and create an array for characters that are new in current location */
<<if tags($curPas).contains("location") || tags($curPas).contains("area")>>
<<set $prevLoc = $curLoc>>
<<set $curLoc = $curPas>>
<<set $curLocCharsNew = []>>
<</if>>
/* Generate random number */
<<set $curRand = random(9)>>
/* HIDE HISTORY CONTROLS */
<<script>>Config.history.controls = false;<</script>>
/* TIME */
/* Update time before everything else */
<<if tags($curPas).contains("area") || tags($curPas).contains("location") || $curPas == "TEST" || $forceTime == 1 || $schedForce == 1>>
<<include "resetTime">>
<</if>>
/* DONE */
/* Add done activities and chores to the array of finished activities, unless it contains "notDone tag, which means it cannot ever be done */
<<if !tags($curPas).contains("notDone")>>
/* If it's multiDone - it's for places where one activity can be launched from different rooms, like picking on girls in club */
<<if tags($curPas).contains("multiDone") && !$sleepReset && ($test || $supporter || !tags($curPas).contains("earlyAccess"))>>
<<set _doneId = $curPas + $curLoc>>
<<set $activitiesDone.push(_doneId)>>
/* If it's a normal activity or chore - add it */
<<elseif ( tags($curPas).contains("activity") || tags($curPas).contains("chore") ) && !$sleepReset && ($test || $supporter || !tags($curPas).contains("earlyAccess"))>>
<<set $activitiesDone.push($curPas)>>
/* If it's quick - we add it with location name and character that was in location (because peek at alexa is not the same as peek at daphne), unless there's no character inside (which means it's peeking at college etc.) in which case we just add the passage name. We also skip doorOpen, as player needs to be able to unlock the doors many times */
<<elseif tags($curPas).contains("quick") && !$sleepReset && ($test || $supporter || !tags($curPas).contains("earlyAccess"))>>
<<if $curLocChars && $curLocChars.length > 0>>
<<set _doneId = $curPas + $curLoc + $curLocChars>>
<<else>>
<<set _doneId = $curPas>>
<</if>>
<<set $activitiesDone.push(_doneId)>>
/* If it's relation - we add it with character name */
<<elseif tags($curPas).contains("relation") && $char && $sleepReset!=1 && ($test || $supporter || !tags($curPas).contains("earlyAccess"))>>
<<set _doneId = $curPas + $char>>
<<set $activitiesDone.push(_doneId)>>
<</if>>
<</if>>
/* SEX */
/* Update the sex vars */
<<if $curPas == "sex" || tags($curPas).contains("sex") || $curPas == "flirt" || $curPas == "talk">>
<<if !$char>>
<<set $char = "daphne">>
<</if>>
/* We need to recreate the variables each time we refresh */
<<set $charVar = State.getVar("$" + $char)>>
<<set $charName = $charVar.name>>
<<else>>
<<set $sex = null>>
<<set $charVar = null>>
<<set $charName = null>>
<</if>>
/* TOP BAR */
<<if !tags($curPas).contains("noSideBar")>>
<span id="topBar"><<include "topBar">></span>
<</if>>
/* YIELDS */
/* Calculate yields for stats, quests, etc. */
<<if !_weekChange && ($yieldsForce || !$yieldsOff && ($curTags.contains("location") || $curTags.contains("area") || $curPas=="TEST"))>>
<<yields null "header">>
<</if>>
/* CHARACTER SCHEDULE AND LOCATIONS */
/* Needs to be after yields but before buildLoc, otherwise thetime passing might reset the changes, or characters loaded to locations are not really in those locations (they are not added = $curLocChars) */
<<include "exceptSched">>
/* Load location specific stuff */
<<if tags($curPas).contains("location") || tags($curPas).contains("area") || $schedForce>>
<<include "buildLoc">>
<</if>>
/* Exceptions */
/* Needs to be after buildLoc, otherwise stuff will get overwritten */
<<include "exceptLoc">>
/* RESET MULTIPLIERS */
<<if $resetMulti>>
<<resetMulti>>
<</if>>
/* DRAW UI */
/* Draw HTML header, characters in locations, change background etc. */
<<include "drawUI">>
/* NOTIFICATIONS */
/* Draw the notifications */
<<if !_weekChange && ($yieldsForce || $curTags.contains("location") || $curTags.contains("area") || $curPas=="TEST")>>
<<notify>>
<</if>>
/* WEEKLY STATS */
/* if the passage is a location or an area, and the week changed - we need to display stats */
<<if _weekChange && (tags($curPas).contains("location") || tags($curPas).contains("area"))>>
<<include "weekStats">>
<<set _weekStatsDisplay = 1>>
<</if>>
/* EVENTS */
/* If the passage is a location or an area - we need to include the passage with the events before the content */
<<if !_weekStatsDisplay && (tags($curPas).contains("location") || tags($curPas).contains("area"))>>
<<if Story.has($curLoc + "Inc") && !$lateNight>>
<<include `$curLoc + "Inc"`>>
<</if>>
<</if>>/* StoryInit */
/* Random (0-9) */
/* Min chances for positive throws (I dunno why it's upside down, so less = bigger chance) */
<<set setup.minRand = 6>> /* Default for non-supporters */
<<set setup.minRandFap = 5>> /* Default for supporters with Fap Mode */
<<set setup.minRandHigh = 3>> /* Used for drugs like LSD, which give players a higher events rate */
<<set setup.minRandLow = 7>> /* Used for events in less used locations, and getting caught mechanics */
<<set setup.minRandSml = 9>> /* Used for events in frequently used locations, like daphne/alexa sleeping visits or bathroom knocking */
/* Default random vars*/
<<set $curRand = 0>> /* resets on every passage display */
<<set $minRand = setup.minRand>>
/* Multipliers */
/* Default system experience multiplier */
<<set $defXpMulti = 10>> /* more = more xp. */
/* Starting player and characters dom/love multiplier */
<<set setup.defMulti = 1.0>> /* more = better */
<<set setup.defMultiFap1 = 1.5>> /* more = better */
<<set setup.defMultiFap2 = 2.0>> /* more = better */
<<set setup.defMultiFap3 = 3.0>> /* more = better */
<<set setup.defCharMulti = 1.0>> /* more = better */
<<set $defMulti = setup.defMulti>>
<<set $defCharMulti = setup.defCharMulti>>
/* Lvl up settings */
<<set $lvlup = null>>
<<set setup.lvlUpCost = 20>> /* less = better */
<<set setup.lvlUpMulti = 1.15>> /* less = better */
/* Defaults */
/* Min number of levels (dom+love) to get alpha male trait (less = better) */
<<set $alphaLvl = 30>>
/* Set starting location (used only for testing) */
<<set $curLoc = "daphGuest">>
<<set $curLocParent = "daphHouse">>
<<set $curLocDoor = "open">>
/* Default settings for sex and talk variables */
<<set $sex = null>>
<<set $char = "daphne">> /* test value */
<<set $charVar = State.getVar("$" + $char)>>
<<set $sexRandomVids = 0>>
/* Default cum points, as well as max cum, vigour, and squirt (it changes for example on Viagra etc) */
<<set setup.cumDefault = 5>> /* less = better */
<<set setup.cumDefaultFap = 3>> /* less = better */
<<set setup.cumMax = 10>> /* more = better */
<<set setup.squirtDefault = 2>> /* more = better */
<<set setup.squirtDefaultFap = 2>> /* more = better */
<<set setup.squirtMax = 10>> /* less = better */
<<set setup.vigourDefault = 6>> /* more = better */
<<set $cumDefault = setup.cumDefault>>
<<set $cumMax = setup.cumMax>>
<<set $squirtDefault = setup.squirtDefault>>
<<set $squirtMax = setup.squirtMax>>
<<set $vigourDefault = setup.vigourDefault>>
/* Max rating points for 3 stars */
<<set $maxRatingKamasutra = 50>>
<<set $maxRatingCollege = 30>>
/* Variable for hiding back link and displaying sex character switch */
<<set setup.backDebuff = 0>>
<<set $charSwitch = 0>>
/* Variables for activating questMode and dreamMode*/
<<set $questMode = null>>
<<set $dreamMode = null>>
/* Variable for storing the current quest update number (used for displaying last activated quest in the sidebar) */
<<set $lastQuest = 0>>
/* Save ver number */
<<if !$saveVerNum>>
<<set $saveVerNum = setup.verNum>>
<</if>>
/* Separately save ver number on which the game was created */
<<if !$startVerNum>>
<<set $startVerNum = setup.verNum>>
<</if>>
/* Fap variables */
<<set $fapYields = null>> /* Bigger yields on/off */
<<set $fapSex = null>> /* Bigger sex stats on/off */
<<set $fapRand = null>> /* Better random on/off */
<<set $fapCode = null>>
<<set $fapDate = null>>
/* Var for number of days between reocurring holiday events */
<<set $yearLoop = 60>>
<<set $yearDay = 0>>
/* Settings defaults (player can change those in the settings screen) */
<<set $gayContent = 2>>
<<set $transContent = 2>>
<<set $pissContent = 2>>
<<set $sexRandomVids = 0>>
<<set $setSound = 0>>
<<set $setSelfMasturbation = 1>>
<<set $overlayEffects = 1>>
<<set $mediaOn = 2>>
<<set $skipExam = 0>> /* Fap mode */
/* Data containers */
/* Array with current multipliers */
<<set $multipliers = []>>
/* Array with characters present in current location on schedule that we've met, and another one for npcs and unmet chars */
<<set $curLocChars = []>>
<<set $curLocCharsHidden = []>>
/* Array with items (stats, quests, etc.) that need updating */
<<set $pocket = []>>
<<set $pocketInstant = []>>
/* Array with counters, used to update each counter daily */
<<set $counters = []>>
/* Array with notifications */
<<set $notifications = []>>
/* Load main content */
<<include "InitCharData">>
<<include "InitTime">>
<<include "InitLocations">>
<<include "InitQuests">>
<<include "InitSex">>
<<include "InitContent">>
<<include "InitSched">>
<<include "InitCollege">>
<<include "InitHints">>
/* Scripts to run on init, load, etc. */
/* Character creation script needs to be launched outside of the StoryInit, so we turn on the switch to do that */
<<set setup.initChars = 1>>
/* Same shit as above with backwards compatibility script */
<<set setup.initComp = 1>>/* media */
/* Draws an image or video. Parameters: path, css classes. */
<<widget "media">>
<<set _path = $args[0] ? $args[0] : "">>
<<set _classes = $args[1] ? $args[1] : "">>
<<set _switch = $args[2] ? $args[2] : "">>
/* Load the chunks array */
<<set _chunksArr = $popupOn ? $popupsArr : $chunksArr>>
/* Set exceptions - eg. if player wants to see videos of self masturbation */
<<if $setSelfMasturbation || _path.indexOf("jerkoff") == -1>>
/* If extension is "mp4" - it's a video */
<<if _path.indexOf("mp4") != -1>>
/* Check if the media is On */
<<if $mediaOn >= 2>>
/* Set video vars */
<<set _vidSettings = "onClick=\"playPause(this);\" loop playsinline">>
<<set _curVidId = !$chunkId ? "vid_" + $chunkVidNum : $chunkId + "_vid_" + $chunkVidNum>>
<<set $chunkVidNum = $chunkVidNum + 1>>
/* If the autoplay is on (through class, or it's a first chunk, or it's a popup outside of chunk macro) - load and play the vids, if not - don't load them for better performance */
<<if $vidAutoplay == 1 || $popupOn && !$chunksOn || _classes != "" && _classes.indexOf("autoplay") != -1>>
<<set _vidSettings = _vidSettings + " autoplay">>
<<else>>
<<set _vidSettings = _vidSettings + " preload=\"none\"">>
<</if>>
/* Set video volume settings */
<<if _classes != "" && _classes.indexOf("volumeLow") != -1>>
<<set _vidSettings = _vidSettings + " onloadstart=\"this.volume=0.2\"">>
<<elseif !$setSound || $setSound == 0 || $setSound == 2 && (_classes == "" || _classes.indexOf("mediaSex") == -1)>>
<<set _vidSettings = _vidSettings + " muted">>
<</if>>
/* Print the video */
<div @class="'vid ' + _classes">
<<print '<video id="' + _curVidId + '" ' + _vidSettings + '><source src="' + setup.ImagePath + _path + '" type="video/mp4"></video>'>>
</div>
/* Report the video to the chunks array */
<<if $chunksOn && $chunkId && _switch.indexOf("sidebar") == -1>>
<<set _chunksArr.find(obj => {return obj.id === $chunkId}).vids.push(_curVidId)>>
<</if>>
<</if>>
/* Otherwise it might be a portrait image */
<<elseif _classes.indexOf("portrait") != -1>>
/* Check if the media is On */
<<if $mediaOn >= 1>>
<<set _portraitNum = random(1,5)>>
<div @class="'image ' + _classes">
<img @src="setup.ImagePath+'characters/'+_path+'/portrait'+_portraitNum+'.jpg'">
</div>
<</if>>
/* Otherwise it might be a youtube video */
<<elseif _classes.indexOf("youtube") != -1>>
/* Check if the media is On */
<<if $mediaOn >= 2>>
<div class="youtube">
<iframe @src="'https://www.youtube.com/embed/' + _path" frameborder="0" allow="encrypted-media;"></iframe>
</div>
<</if>>
/* Otherwise it's a normal image */
<<elseif _path>>
/* Check if the media is On */
<<if $mediaOn >= 1>>
<div @class="'image ' + _classes">
<img @src="setup.ImagePath+_path" @class="_switch">
</div>
<</if>>
<</if>>
<</if>>
<</widget>><<events>>
<<EVENT "!daphne; $daphne.met">>
<<chunks>>
<<media "interruption.mp4">>
<p>The doors open and ''$daphne.name'' enters the room.</p>
<<media "daphne" "portrait">>
<<dial "daphne" "Oh, so sorry, I thought you're out...">>
<<dial "player" "Why would I go out, if I live under one roof with a beautiful woman?">>
<p>You wink at her. $daphne.name is a bit surprised by your compliment. To be honest so am I - well done, buddy, you're learning!</p>
<<dial "daphne" "Ha, ha. I just came to clean your room, but I won't bother you...">>
<<dial "player" "You never bother me, $daphne.name! I was just working hard on my muscles... something that we, //alpha males//, do.">>
<p>Somehow this comes out pretty un-alpha. You cannot leave it like that, you had such a good start!</p>
<<menu>>
<<btn null "I want to be strong to protect you!" "daphne.love" "dialog">>
<<btn null "It's the alpha male blood that makes me push to the limit!" "daphne.dom" "dialog">>
<<chunk>>
<<if $player.lvl > 2>>
<p>You said it in a way that gives $daphne.name shivers (and me too - well done!)</p>
<<else>>
<p>You said it in a way that, well, kinda makes me wanna kill myself. What am I even doing here? I was destined for great things, and instead I'm bankrupt and stuck narrating a fucking porn game... Sigh...</p>
<p>Ok, sorry dude. I'm back. Don't worry, we'll work with what we have - improvise, adapt, overcome - right?</p>
<</if>>
<<dial "daphne" "You're a sweet-o, hun. May I touch it?">>
<p>You hesitantly look down at your crotch.</p>
<<dial "player" "You want to touch... //it//?">>
<p>There's a deep hope in your voice. The hope, that $daphne.name will fall on hear knees and beg - //"yes, hun, I want to touch your dick, I want it more than anything else in the entire fucking world"//. And you'll say //"Yes you can"//, and she'll touch it, and stroke it, and suck it, and it would be pure perfection, right?</p>
<<btn>>
<<chunk>>
<p>But instead - $daphne.name starts giggling.</p>
<<dial "daphne" "Ha, ha, you're so funny! I meant your biceps, dummy!">>
<big>Bummer.</big>
<p>But still - it's a pretty good outcome, right? I'll make it easy for you here, buddy. You can tell her to fuck off, but both of us don't want it, right? So you basically have two options.</p>
<<menu>>
<<btn "#daphneLove" "Of course you can!" "daphne.love" "dialog">>
<<btn "#daphneDom" "Only if you'll show me your boobs." "daphne.dom" "dialog">>
<<chunk null "#daphneDom">>
<p>$daphne.name looks at you, a bit surprised. You're not sure if she's angry or not, she just stares into your eyes for a moment...</p>
<<media "activities/train/player_stare.mp4">>
<p>Second passes like a year. Were you too direct? You were, but the better question is - is it good? You can't just tell women to show their breasts, you'll get slapped! Then again, it's not like you just met her...</p><<if $daphne.status <= 1>>
<<set _decision = ["#daphTitsBad", "#daphTitsBad", "#daphTitsBad", "#daphTitsBad", "#daphTitsOk"].random()>>
<<elseif $daphne.status <= 2>>
<<set _decision = ["#daphTitsBad", "#daphTitsBad", "#daphTitsBad", "#daphTitsOk"].random()>>
<<elseif $daphne.status == 3>>
<<set _decision = ["#daphTitsBad", "#daphTitsOk"].random()>>
<<elseif $daphne.status == 4>>
<<set _decision = ["#daphTitsBad", "#daphTitsOk", "#daphTitsOk"].random()>>
<<elseif $daphne.status >= 5>>
<<set _decision = "#daphTitsOk">>
<</if>>
<<menu null null "wildcard single">>
<<btn _decision "Roll the dice!" null "wildcard">>
<<chunk null "#daphTitsBad">>
<p>$daphne.name bursts into giggle.</p>
<<dial "daphne" "Your face, ha, ha! Oh, hun, you know we can't do stuff like that! What would your dad say?">>
<<dial "player" "But...">>
<<dial "daphne" "Don't worry, I'm not angry. I'm flattered!">>
<p>She winks at you, and walks out of the room before you manage to stop her.</p>
<<btn $curLoc>>
<<chunk null "#daphTitsOk">>
<p>$daphne.name bursts into giggle.</p>
<<dial "daphne" "Well, well, well. It seems you're changing into a man. And I like men.">>
<p>You feel the blood rushing down to your groin. Will it happen? Will you see her boobs?</p>
<<dial "daphne" "But you need to learn how to take things slowly...">>
<<dial "player" "What the fuck!">>
<p>What the fuck indeed. $daphne.name leans in, her face is now very close to yours.</p>
<<btn>>
<<chunk "daphne.status=2">>
<<media "activities/train/daphne_kiss.jpg">>
<p>She puts her mouth to yours. Her tongue pushes deeper and deeper. You grab it with your lips and suck it with all your strength. You can feel that she likes it.</p>
<p>But it's not the end yet. Now you start your own expedition deep into her mouth with your tongue. You stretch it to the maximum, nearly going down her throat.</p>
<p>$daphne.name finally pulls away her head, and looks you in the eyes.</p>
<<btn>>
<<chunk "daphne.status=3">>
<<dial "daphne" "That was a nice kiss... It convinced me.">>
<<dial "player" "Convinced you of what...?">>
<p>God damn it, buddy, I feel like I'm spilling my guts for you, and you're learning nothing. NOTHING!</p>
<<dial "player" "I mean... Yeah, baby!">>
<p>Better! Although, for the record, I'm sooooo tired with "Austin Powers" at this point.</p>
<<btn>>
<<chunk "daphne.status=3">>
<p>$daphne.name unpins her blouse and bends over to give you a better view.</p>
<<media "activities/train/daphne_boobs.jpg">>
<p>You hesitantly touch her boobs with your hands. They are firm like fresh melons.</p>
<<dial "daphne" "You like \'em?">>
<<dial "player" "Oh yeah...">>
<<dial "daphne" "Ha ha... All the men are the same, show them boobs and they're out.">>
<p>She takes her tits away and covers them.</p>
<<dial "daphne" "Your turn!">>
<<dial "player" "Whaaat?">>
<<dial "daphne" "Show me some muscle, hun.">>
<<btn "#daphneLove">>
<<chunk "daphne.status=2">>
<<dial "daphne" "I like you, hun...">>
<p>She whispers in your ear.</p>
<<dial "player" "That's great...">>
<p>Really?! REALLY!? You could say so many things, and you said this.</p>
<<dial "daphne" "I feel like I had enough emotions already. You'll show me your muscless next time...">>
<p>She was so close! You need to work on it, buddy!</p>
<p>You watch as $daphne.name leaves, closing the doors behind her.</p>
<<btn $curLoc>>
<<chunk null "#daphneLove">>
<p>You look $daphne.name in the eyes and flex your biceps the hardest you can.</p>
<<dial "daphne" "Ohhh...">>
<p>You can feel every fiber of your muscle trying to make itself bigger for her...</p>
<<media "activities/train/player_flex.mp4">>
<p>You're focused. Veins pump the blood, sweat flows like a river. Your face is like a tip of your dick (I mean purple, god damn it!). $daphne.name comes closer. She touches your biceps... Rubs it...</p>
<<btn>>
<<chunk>>
<<if $player.dominationLvl < 4>>
<<media "activities/train/player_skinny.jpg">>
<p>Nope. Just nope. It doesn't work. Good news is you might be the first man in the history, that literally has no fucking muscles.</p>
<<dial "player" "Is it awesome or what?">>
<p>Honest opinion, buddy - shut the fuck up already.</p>
<<dial "daphne" "Awesome? Sure... Just maybe stay away from everything above 5 pounds, for now... I'm worried that you'll hurt yourself, hun.">>
<<elseif $player.dominationLvl < 8>>
<<media "activities/train/player_medium.jpg">>
<<dial "player" "It's not much but an honest work!">>
<p>There's some potential here, but in general you still look like shit.</p>
<<dial "daphne" "Mmmm... I love to watch how a boy is becoming a man! Just watch out, and don't hurt yourself, ok?">>
<<else>>
<<media "activities/train/player_strong.jpg">>
<p>If $daphne.name was a doctor, she would just take you to a hospital. But because she's a braindead MILF - she actually likes what she sees.</p>
<<dial "daphne" "My, my... hun... They feel really hard.">>
<<dial "player" "Oh behave!">>
<<dial "daphne" "You have to watch out - muscles like that are dangerous! You might even kill someone by accident.">>
<</if>>
<<dial "player" "What can I say? I live dangerous life!">>
<p>If you mean the danger of not-getting-laid then I guess you're onto something.</p>
<<if $daphne.status>=4>>
<p>Surprisingly, $daphne.name seems to like what she sees.</p>
<<dial "daphne" "You know what? You're such a good boy. I feel like you deserve a reward.">>
<</if>>
<<btn>>
<<chunk "daphne.status=4">>
<<media "activities/train/daphne_boobs2.jpg">>
<p>She unpins her blouse, and shows you her gigantic melons in all the glory. You don't even hesitate for a second - you pull her closer and touch, squeeze, and rub them like a baby.</p>
<p>$daphne.name starts moaning... It might be a good opportunity to do something more. Then again, you're a bit tired after the training. Maybe it would be better to just stop when you're on the top?</p>
<<menu null null "sex">>
<<btn "sex" "Fuck her brains out!" "$char+daphne" "sex action">>
<<btn $curLoc "Finish up for today" "daphne.love" "action">>
<<btn null "Bite those titties" "daphne.dom" "action">>
<<chunk "daphne.status=4">>
<p>You put your face between those two beautiful meatbags.</p>
<<media "activities/train/daphne_tits.mp4">>
<p>Good job, bud! $daphne.name seems to really enjoy your efforts!</p>
<<btn>>
<<chunk>>
<p>But the fun is over anyway.</p>
<<dial "daphne" "Thanks, hun. I needed this.">>
<<dial "player" "Maybe we could--">>
<p>$daphne.name smiles.</p>
<<dial "daphne" "I'm a bit tired, hun. I'll leave you be.">>
<p>She walks out of the room, leaving you sweaty and wanting more. Much more.</p>
<<btn $curLoc>>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "!alexa; $alexa.met">>
<<chunks>>
<<media "interruption.mp4">>
<p>Suddenly the door slams into the wall as ''$alexa.name'' enters the room.</p>
<<media "alexa" "portrait">>
<<dial "alexa" "Hey, freak, I need to borrow some money-- What the fuck!?">>
<p>She looks at your sweaty face with a mix of surprise and curiosity.</p>
<<dial "alexa" "Are you jacking off again?!">>
<<dial "player" "What!? No!">>
<p>Even though you're angry at the way she entered the room, you hope that she will appreciate the efforts that you put in to build up your physique. Maybe it's a good idea to show off? Or is it too early for that?</p>
<<menu null null "yieldsHide">>
<<btn "#alexaAnyway" "Keep it cool!" "alexa.love" "action yieldsHide">>
<<btn "#alexaShowOff" "Show off!" null "action" "My training routine is bringing hella sweet results!">>
<<chunk "player.dominationLvl!=5" "#alexaShowOff">>
<p>She just bursts into laughter.</p>
<<media "activities/train/alexa_laugh.mp4">>
<<dial "alexa" "//Your training routine//??? O-M-G that's the funniest thing I've ever heard.">>
<<dial "player" "Laugh all you want, you'll change your opinion when you'll see how big I'll grow!">>
<<dial "alexa" "I'm sure you will! Just don't forget to eat your veggies.">>
<p>You feel smaller just listening to her. Can't she see that you're doing all this to make her like you more?</p>
<<dial "alexa" "Oh shit, kid, I haven't laughed that hard for a while. I think I might have peed myself a little.">>
<p>She wipes tears from her eyes.</p>
<<btn "#alexaAnyway" null "alexa.dom-1" "yieldsHide">>
<<chunk "player.dominationLvl=5" "#alexaShowOff">>
<<dial "alexa" "Well, you do seem to look slightly less pathetic than usual.">>
<p>You heard that?! She noticed it! You're not a dweeb anymore.</p>
<<dial "alexa" "But you're still a dweeb!">>
<p>Oh, shit. Sorry, buddy, that's a bummer.</p>
<<btn "#alexaAnyway">>
<<chunk null "#alexaAnyway">>
<<dial "alexa" "Anyway... So what about the money?">>
<p>Shit. You were hoping she forgot about that.</p>
<<dial "alexa" "I just need 50$, I'm sure you can spare that much, you're loaded!">>
<<dial "player" "I'm not loaded! I barely have enough for myself!">>
<p>$alexa.name rolls hair around her finger and smiles seductively.</p>
<<dial "alexa" "I'm sure $50 won't hurt you... I'll like you more!">>
<<menu>>
<<btn "#alexaNo" "I'm not lending you shit!" "alexa.dom" "dialog">>
<<btn "#alexaYes" "Ok, here's the money." "alexa.love; cash-50; cash=50" "dialog">>
<<chunk null "#alexaNo">>
<<dial "alexa" "Whaat? You're saying //no// to me?!">>
<p>You're really not sure if it's a good idea, but you're sticking with it.</p>
<<dial "player" "Yup.">>
<<dial "alexa" "Who knew, you might have something in you after all!">>
<<dial "player" "Really?">>
<p>Don't look at me, buddy! I'm as surprised as you are.</p>
<<dial "alexa" "I'm not sure why, but I always felt arousal when a man says no to me...">>
<p>It's getting better and better. $alexa.name thinks for a second, before a smile brigtens her face. It's one of those smiles that says she has a nasty idea.</p>
<<btn>>
<<chunk>>
<<media "activities/train/alexa_thanks2.jpg">>
<<dial "alexa" "Here's your little reward for sticking to your ground. I wouldn't give you this money back anyway!">>
<p>Ohhh shit, buddy, I'm so proud of you! You kept the money, and still get a pussy - win/win for team $player.surname! Woohoo!</p>
<p>But unfortunately the show ends quickly.</p>
<<dial "alexa" "That's it for now, dweeb. See you!">>
<p>She quickly opens the doors and disappears on the other side, leaving you somewhat sad, but hopeful.</p>
<<btn $curLoc>>
<<chunk null "#alexaYes">>
<<dial "alexa" "Thanks! You won't regret it!">>
<<dial "player" "Oh really? And how would you repay it?">>
<p>She smiles to you and slowly bends over.</p>
<<dial "alexa" "This is how!">>
<<btn>>
<<chunk>>
<<if $alexa.status < 3>>
<<media "activities/train/alexa_thanks.jpg">>
<<else>>
<<media "activities/train/alexa_thanks2.jpg">>
<</if>>
<p>You were not expecting that. Maybe it was not such a bad investment after all? But unfortunately the show ends quickly.</p>
<<dial "alexa" "That's it for now, dweeb. See you!">>
<p>She opens the doors and disappears on the other side, leaving you somewhat sad, but hopeful.</p>
<<btn $curLoc>>
<</chunks>>
<</events>>/* prereq */
/* Check if the given prerequisites are met. Arguments: prereq data for parsing and possible switch. Possible results:
- $prereq = 1 - prerequisites are met;
- $prereq = 2 - prerequisites are not met, but button should be disabled instead of not showing (for quests checks).
- $prereq = 3 - prerequisites are not met.*/
<<widget "prereq">>
/* TEST: */
<<if $test && $testReport == "all">>
<<script>>console.log(" ......PREREQ START.......");<</script>>
<<if $args[0]>><<script>>console.log(" data: " + State.variables.args[0]);<</script>><</if>>
<</if>>
/* To launch another iteration of the widget within the widget (for quests) we need to backup some data */
<<set _iCopy = _i>>
<<set _qCopy = _q>>
<<set _objPrqCopy = _objPrq>>
/* Split the data */
<<set _objPrq = splitter($args[0])>>
/* Check if there's a switch (eg. "valueShow" switches the values to always show) */
<<set _switchPrq = $args[1] ? $args[1] : "">>
/* Set up main vars */
<<set _minRand = null>>
<<set $prereq = null>>
<<set $errorStat = null>>
<<set $errorStatValue = null>>
<<for _i = 0; _i < _objPrq.length; _i++>>
<<set _periodCur = null>>
<<set _prereqCur = null>>
<<set _var = null>>
<<set _q = null>>
<<if _objPrq[_i].action == "check" && $prereq < 3>>
/* QUEST */
<<if _objPrq[_i].type == "quest">>
/* Check if a quest we're checking is DONE */
<<if $player.questsListDone && $player.questsListDone.indexOf(_objPrq[_i].id) != -1>>
<<set _questDone = 1>>
<<set _questKnown = 1>>
<<else>>
<<set _questDone = null>>
<</if>>
/* Check if player knows the given quest, and it's not done */
<<if !_questDone && $player.questsList && $player.questsList.indexOf(_objPrq[_i].id) != -1>>
<<set _questKnown = 1>>
<<elseif !_questDone>>
<<set _questKnown = null>>
<</if>>
/* First check if we're looking for a quest to be DONE, to avoid unnecessary looking for quest in the array */
<<if _objPrq[_i].value == "DONE">>
<<if (_questDone && _objPrq[_i].positive) || (!_questDone && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If we're NOT looking for a check to be done */
<<else>>
/* If we know the quest get it */
<<if _questKnown || _questDone>>
<<set _curQuest = $player.quests.find(obj => {return obj.id === _objPrq[_i].id})>>
<</if>>
/* IMPORTANT as of 0.3.22 I've added < and >, needs testing!!! */
<<if _objPrq[_i].sign == "<">>
/* If we know a quest, and positive check for the active task to be lower than the task from prereq, or player doesn't know the quest at all - it passes. Same with the negative check - for the opposite;) */
<<if (_objPrq[_i].positive && ((_questKnown && _curQuest.active < _objPrq[_i].value) || !_questKnown)) || (!_objPrq[_i].positive && (_questKnown || _questDone) && _curQuest.active >= _objPrq[_i].value)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<elseif _objPrq[_i].sign == ">">>
/* If we know a quest, and positive check for the active task to be higher than the task from prereq - it passes. Same with the negative check - for the opposite;) */
<<if (_objPrq[_i].positive && _questKnown && _curQuest.active > _objPrq[_i].value) || (!_objPrq[_i].positive && ((_questKnown && _curQuest.active <= _objPrq[_i].value) || !_questKnown))>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<else>>
<<if _questKnown || _questDone>>
/* The check passes if it's positive and the current quest active task is the same as the task we're looking for, or it's negative and it's different */
/* IMPORTANT as of 0.2.43 I've changed that the negative check goes through if the active task is different than the value, instead of smaller as it was before, and also included done quests - needs testing!!! */
<<if (_objPrq[_i].positive && _objPrq[_i].value == _curQuest.active) || (!_objPrq[_i].positive && _curQuest.active != _objPrq[_i].value)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If the player doesn't know the given quest */
<<else>>
/* If it's a positive search for 0, or a negative search */
/* IMPORTANT as of 0.2.43 I've changed that if it's negative search for anything but 0, and we don't know the quest - it passes. I don't fully remember why it wasn't like this - needs testing!!! */
<<if (_objPrq[_i].positive && _objPrq[_i].value == 0) || (!_objPrq[_i].positive && _objPrq[_i].value != 0)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<</if>>
<</if>>
<</if>>
<<set $prereq = _prereqCur>>
/* ITEMS */
<<elseif _objPrq[_i].type == "item">>
/* Check if character has an item */
<<if ($player.itemsList && $player.itemsList.indexOf(_objPrq[_i].id) != -1 && _objPrq[_i].positive) || ((!$player.itemsList || $player.itemsList.indexOf(_objPrq[_i].id) == -1) && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* EFFECT */
<<elseif _objPrq[_i].type == "effect">>
/* Check if player has the effect */
<<if ($player.effectsList && $player.effectsList.indexOf(_objPrq[_i].id) != -1 && _objPrq[_i].positive) || ((!$player.effectsList || $player.effectsList.indexOf(_objPrq[_i].id) == -1) && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = $prereq < 3 ? 2 : 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* CHARACTERS */
<<elseif _objPrq[_i].type == "character">>
/* If the character is present and the check is positive, or if it's not present, and check is negative */
/* If the value is hidden, we look hidden array */
<<if _objPrq[_i].value == "hidden">>
<<set _charsPresent = $curLocCharsHidden>>
<<else>>
<<set _charsPresent = $curLocChars>>
<</if>>
<<if (_charsPresent.indexOf(_objPrq[_i].id) != -1 && _objPrq[_i].positive) || (_charsPresent.indexOf(_objPrq[_i].id) == -1 && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
/* Otherwise */
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* VARIABLES */
/* !IMPORTANT! Originally if we were looking for the value of the variable, we were looking for ==. This created problems with debuffs, where the counter might work past a certain number. For 0.2.15 i've changed that if the value is numeric, the check is for >= and not == . */
/* !UPDATE! The above created even bigger problems with vars. It turns out in most cases when I look for a number it's ==1, and I want it to be that exactly. So I reverted back. In the future the counters should be done through counters, and then there might be >=, but not here. This needs a fuckload of testing:( TODO */
<<elseif _objPrq[_i].type == "var">>
/* Rebuild the variable */
<<if _objPrq[_i].char != ''>>
<<set _var to '$' + _objPrq[_i].char + '.' + _objPrq[_i].id>>
<<else>>
<<set _var to '$' + _objPrq[_i].id>>
<</if>>
<<set _valueCurrent to State.getVar(_var)>>
/* If we're looking for "null" change the value = null, unless it's char.met var, in which case null == 0 */
<<if _objPrq[_i].value == "null" && _objPrq[_i].id != "met">>
<<set _objPrq[_i].value = null>>
<<elseif _objPrq[_i].value == "null">>
<<set _objPrq[_i].value = 0>>
<</if>>
/* Check if the check matches the value */
<<if (_valueCurrent == _objPrq[_i].value && _objPrq[_i].positive) || (_valueCurrent != _objPrq[_i].value && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* COUNTERS */
<<elseif _objPrq[_i].type == "counter">>
/* Rebuild the variable */
<<if _objPrq[_i].char != ''>>
<<set _var = _objPrq[_i].char + '.' +_objPrq[_i].id>>
<<else>>
<<set _var = _objPrq[_i].id>>
<</if>>
<<set _valueCurrent = State.getVar('$' + _var)>>
/* Go further if _valueCurrent exists */
<<if _valueCurrent != null>>
/* Find this counter in the counter array */
<<set _counterCurrent = $counters.find(obj => {return obj.id === _var})>>
/* If the counter exists, and we're looking for null - treat it as the end of counter. This is useful when we have a counter that we want to pass both on null and when the counter ends (like 0) */
<<if _counterCurrent && _objPrq[_i].value == "null">>
<<set _objPrq[_i].value = _counterCurrent.end>>
<</if>>
/* Compare based on the counter type. */
<<if _counterCurrent && _counterCurrent.type == "-" && _counterCurrent != null>>
<<if (_valueCurrent <= _objPrq[_i].value && _objPrq[_i].positive) || (_valueCurrent > _objPrq[_i].value && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<elseif _counterCurrent && _counterCurrent.type == "+" && _counterCurrent != null>>
<<if (_valueCurrent >= _objPrq[_i].value && _objPrq[_i].positive) || (_valueCurrent < _objPrq[_i].value && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If it's neither - or + or the current doesn't exists - do a normal == like with a var */
<<else>>
<<if (_valueCurrent == _objPrq[_i].value && _objPrq[_i].positive) || (_valueCurrent != _objPrq[_i].value && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<</if>>
/* If _valueCurrent doesn't exist - and we're looking for "null" */
<<elseif _objPrq[_i].value == "null">>
<<if _objPrq[_i].positive>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If _valueCurrent doesn't exist and we're not looking for null - we treat it as it would exist, but it passes just negative checks */
<<elseif !_objPrq[_i].positive>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* DAYS */
<<elseif _objPrq[_i].id == "day">>
/* Fix for a common typo */
<<if _objPrq[_i].value.toLowerCase() == "workday">>
<<set _objPrq[_i].value = "workdays">>
<</if>>
/* If the check value is a number - it's a day number check (positive if the current day number is equal or bigger then the checked day number) */
<<if !isNaN(_objPrq[_i].value)>>
/* Check if the current day matches the check */
<<if ($day >= _objPrq[_i].value && _objPrq[_i].positive) || ($day < _objPrq[_i].value && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If the check value is "workdays" or "weekend" we need to check if the current weekday is in one of these arrays (check is positive if it is) */
<<elseif _objPrq[_i].value.toLowerCase() == "workdays" || _objPrq[_i].value.toLowerCase() == "workday" || _objPrq[_i].value.toLowerCase() == "weekend">>
<<if (_objPrq[_i].positive && _objPrq[_i].value.toLowerCase() == $todayType) || (!_objPrq[_i].positive && _objPrq[_i].value.toLowerCase() != $todayType)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If none of the above is correct - it's a weekday check (check is ok if current day matches the check day) */
<<elseif (setup.days[$weekDay - 1].toLowerCase() == _objPrq[_i].value.toLowerCase() && _objPrq[_i].positive) || (setup.days[$weekDay - 1].toLowerCase() != _objPrq[_i].value.toLowerCase() && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* PERIODS */
<<elseif _objPrq[_i].id == "period">>
<<set _period = _objPrq[_i].value.toLowerCase()>>
/* Check current period - name or number */
<<if _objPrq[_i].value.match(/[a-zA-Z]+/)>>
<<set _periodCur = setup.periods[$period].toLowerCase()>>
<<else>>
<<set _periodCur = $period>>
<</if>>
/* If te check value is "dayhours" or "nighthours" we need to check if the current period is in one of these arrays (check is positive if it is) */
<<if _period == "dayhours" || _period == "nighthours">>
<<if _period == "dayhours">>
<<set _hours = setup.dayhours>>
<<else>>
<<set _hours = setup.nighthours>>
<</if>>
<<if (_hours.indexOf($now) != -1 && _objPrq[_i].positive) || (_hours.indexOf($now) == -1 && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<elseif (_periodCur == _objPrq[_i].value.toLowerCase() && _objPrq[_i].positive) || (_periodCur != _objPrq[_i].value.toLowerCase() && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* STATS */
<<elseif _objPrq[_i].id == "domination" || _objPrq[_i].id == "love" || _objPrq[_i].id == "cash" || _objPrq[_i].id == "desire" || _objPrq[_i].id == "vigour" || _objPrq[_i].id == "status" || _objPrq[_i].id == "lvl" >>
/* If dom or love - we need to use default xp multiplier first */
<<if _objPrq[_i].id == "love" || _objPrq[_i].id == "domination">>
<<set _objPrq[_i].value = _objPrq[_i].value * $defXpMulti>>
<</if>>
/* Build a stat variable */
<<set _var = State.getVar('$' + _objPrq[_i].char + '.' + _objPrq[_i].id)>>
/* If a character has enough of the given stat */
<<if (parseInt(_var) >= _objPrq[_i].value && _objPrq[_i].positive) || (parseInt(_var) < _objPrq[_i].value && !_objPrq[_i].positive)>>
/* We change prereq to 1, unless it was already sth else */
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
/* If the character doesn't have enough stat */
<<else>>
/* We change prereq to 2, unless it was already 3, or it's lvl check (in which case it should be 3) */
/* UPDATE: From 0.3.13 lvl is considered 2 not 3, to make the buttons hidden behind a lvl check appear in the events just disabled */
<<set _prereqCur = $prereq < 3 ? 2 : 3>>
/* We need to save what was the check for to display the right info on btn. If the _errorStat is already set - we skip it (we limit to first error we find) */
<<if _prereqCur == 2 && !$errorStat>>
<<set $errorStat = _objPrq[_i].id>>
/* If the check was for cash - we display the amount */
<<if _objPrq[_i].id == "cash">>
<<set $errorStatValue = _objPrq[_i].value>>
/* If there's a "valueShow" switch - we show the value */
<<elseif _switchPrq == "valueShow">>
<<set $errorStatValue = _objPrq[_i].value>>
/* If the check was for something else - we don't need value */
<<else>>
<<set $errorStatValue = null>>
<</if>>
<</if>>
<</if>>
<<set $prereq = _prereqCur>>
/* TRAIT */
<<elseif _objPrq[_i].type == "other" && _objPrq[_i].id == "trait">>
/* If there's no character - it's player */
<<if _objPrq[_i].char == "">>
<<set _objPrq[_i].char = "player">>
<</if>>
/* Build a stat variable */
<<set _var = State.getVar('$' + _objPrq[_i].char + '.' + _objPrq[_i].id)>>
<<set _val = _objPrq[_i].value>>
/* Because of the change in traits system, we should also check for traitShrt just to be sure, because old queries might have something like trait=beta which won't work (because trait has added level) */
<<set _varShrt = State.getVar('$' + _objPrq[_i].char + '.traitShrt')>>
/* Check trait */
<<if ((_var == _val || _varShrt == _val) && _objPrq[_i].positive) || ((_var != _val && _varShrt != _val) && !_objPrq[_i].positive)>>
/* We change prereq to 1, unless it was already sth else */
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<<set $prereq = _prereqCur>>
/* DOORS */
<<elseif _objPrq[_i].type == "door">>
/* First check if we are looking for open doors */
<<if _objPrq[_i].id == "open">>
/* If the positive search matches or we have permission OR the negative search doesn't match - profit! */
<<if (_objPrq[_i].id == $curLocDoor && _objPrq[_i].positive) || ($permission && _objPrq[_i].positive) || (_objPrq[_i].id != $curLocDoor && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If we are looking for closed/locked doors */
<<else>>
/* Permission means the doors are actually "open" (player has permission to be there) so in that case positive search for closed/locked doors is always a fail */
<<if ($permission && _objPrq[_i].positive) || (!$permission && !_objPrq[_i].positive)>>
<<set _prereqCur = 3>>
/* If there's no permission and it's a positive search it's a normal == */
<<elseif !$permission && _objPrq[_i].positive>>
<<if _objPrq[_i].id == $curLocDoor>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* If we have permission (we're already inside) and it's a negative search for closed/locked doors - it's always a success (because the doors are actually open, so they are never ==) */
<<elseif $permission && !_objPrq[_i].positive>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<</if>>
<</if>>
<<set $prereq = _prereqCur>>
/* WHILE */
<<elseif _objPrq[_i].id == "while">>
<<set _char = _objPrq[_i].char>>
<<set _charOk = null>>
<<set _charLoc = null>>
<<set _charLocNew = null>>
/* If there's a character - we need to know couple things about him */
<<if _char != "">>
<<set _charMet = parseInt(State.getVar('$' + _char + '.met'))>>
<<set _charType = State.getVar('$' + _char + '.type')>>
/* If we know the character or he's an npc - he passed */
<<if _charMet == 1 || _charType == "npc">>
<<set _charOk = 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* We also need to know if the character is present in the location */
<<if $curLocChars.indexOf(_char) != -1>>
<<set _charLoc = 1>>
<</if>>
/* And if he just entered it now */
<<if $curLocCharsNew.indexOf(_char) != -1>>
<<set _charLocNew = 1>>
<</if>>
<</if>>
/* If there was no prereqCur already (based on character check) or the charOk is positive - we move forward */
<<if !_prereqCur && (_char == "" || _charOk == 1)>>
/* If the value is "enter" we check if the specified character is new to location */
<<if _objPrq[_i].value == "enter">>
/* If we check with negative, we just check for enter (character can be in the location) */
<<if (_charLoc && _charLocNew && _objPrq[_i].positive) || (!_charLocNew && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
/* Otherwise, we check if the value of the while matches with the current location's while (0=Char; 1=loc; 2=day; 3=period; 4=while) */
<<else>>
/* Check if the room is set to a "while" that we're asking */
/* 0.3.37 simplified it, dunno why it was so complicated if we have curLocWhile at our disposal, make sure it works though */
<<set _while = $curLocWhile>>
<<if (_while == _objPrq[_i].value && _objPrq[_i].positive) || (_while != _objPrq[_i].value && !_objPrq[_i].positive)>>
<<set _prereqCur = $prereq > 1 ? $prereq : 1>>
<<else>>
<<set _prereqCur = 3>>
<</if>>
<</if>>
<</if>>
<<set $prereq = _prereqCur>>
/* CREW */
/* WHEELS */
/* PERK */
<</if>>
/* TEST EACH PIECE (irritating so turned off): */
<<if $test && $testReport == "all" && _objPrq && _objPrq.length != 0>>
<<script>>
console.log(" current prereq piece: ");
console.log(State.temporary.objPrq[State.temporary.i]);
<</script>>
<</if>>
/* TEST: */
<<if $test && $testReport == "all" && $prereq>>
<<script>>
console.log(" current prereq: " + State.variables.prereq);
<</script>>
<</if>>
<</if>>
<</for>>
/* If none of the above checks produced a result */
<<if $prereq < 2>>
<<set $prereq to 1>>
<</if>>
/* In case there was another iteration - we need to bring back some data */
<<set _i = _iCopy>>
<<set _q = _qCopy>>
<<set _objPrq = _objPrqCopy>>
/* TEST: */
<<if $test && $testReport == "all">>
<<script>>console.log(" ......PREREQ END.......");<</script>>
<</if>>
<</widget>>/* PassageFooter */
/* EVENTS - if the passage is an activity/quick - we need to include the passage with the events after the content */
<<if $questMode == null && (tags($curPas).contains("activity") || tags($curPas).contains("quick") || tags($curPas).contains("sex") )>>
<<if Story.has($curPas + `Inc`)>>
/* Mark the event */
<<set $eventOn = 1>>
/* Include the events passage (events script will decide which event to display) */
<<include `$curPas + "Inc"`>>
<</if>>
<</if>>
/* LOCATIONS and AREAS - load location specific stuff */
<<if tags($curPas).contains("location") || tags($curPas).contains("area")>>
/* If the location had included event, we need to hide location description and characters in the location */
<<if $hideDesc>>
<script>hideDesc();</script>
<</if>>
/* Pass the time button - this button is needed mostly during dreamMode, where there are no other options to pass the time, unless we're displaying an event */
<<if $dreamMode && !$curTags.contains("quest") && !$curTags.contains("events")>>
<<btn $curLoc "Pass the time" "time+" "timePass">>
<</if>>
/* Display button to go home during late night */
<<if $lateNight && $curPas != "daphGuest">>
<<btn "daphGuest" "Go home and get some sleep!" null "teleport">>
<</if>>
<</if>>
/* Friendly reminders */
<<if !$supporter && $nagging >= 4 && $day >= (($nagging * 14) + 2) && $naggingDebuff == 0>>
<<set $nagging = $nagging + 1>>
<<pocket "counter:naggingDebuff-14">>
<<set _reminder = ["it's better to prepare your tissues before starting this game.", "love your dick, wash your hands (sometimes)!", "cum like a pro with the Fap Mode activated!", "supporting me means that you have guaranteed place in heaven (or hell, if you're into this kind of stuff)!", "you know what's the most alpha thing to do? Supporting the guy that made you cum! //Uhmmm...// Wait. That came out wrong."].random()>>
<div class="si window" id="reminder">
<<dial "mercutio" `"Psst. Up here! It's me - Grave! Just a friendly reminder - " + _reminder` "si1">>
<<btnPopup "support" "Support Grave!" "med">>
<a class="btn sml" onclick="javascript:document.getElementById('reminder').style.display = 'none'"><span class="btnText">Fuck off already!</span></a>
</div>
<</if>>
/* Saved info div */
<div id="saved" class="fioq"></div>
/* Install listeners on clickable tooltips */
<script>checkCollapsible();</script>
<script>checkTooltips();</script>
<script>checkSelects();</script>
/* MARK THE END OF PASSAGE */
<<if $test && $testReport != "hide">>
<<script>>
console.log("⬜⬜⬜⬜⬜ PSG END ⬜⬜⬜⬜⬜");
console.log(" ");
<</script>>
<</if>>/* daphIntro */
<<events>>
<<EVENT "quest:daphIntro=1">> /* She told you to unpack, so what are you waiting for, bozo!? While in your room click the "Unpack" button. */
<<chunks>>
<p>You put your luggage on the bed and start taking your clothes out of it. You open one drawer - it's full. You open another one - it's full too. And the closet also.</p>
<<media "quests/daphIntro/fullCloset.mp4">>
<<btn>>
<<chunk>>
<p>It's mostly jeans and leather clothing, probably belonging to $daphne.name's son - $paul.name. It seems he was really into cowboy shit.</p>
<<media "quests/daphIntro/cowboy.mp4">>
<p>You realize that she probably forgot to empty the drawers before you came - after all she said she was expecting you tomorrow.</p>
<p>There's no point in unpacking until you have some space.</p>
<big>You need to talk with $daphne.name about it.</big>
<<btn>>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "quest:daphIntro=2">> /* There's not enough space. Find $daphne.name and talk with her about it. */
<<chunks>>
<p>You take a deep breath and approach $daphne.name with a smile.</p>
<<dial "player" "Hey miss... I mean - //$daphne.name//!">>
<<dial "daphne" "Yes, hun?">>
<big>She looks at you with her big ti...eyes!</big>
<p>You feel a bit dizzy and realize that you haven't really thought through how to start this conversation. She notices you're hesitating and moves closer with care.</p>
<<dial "daphne" "You can tell me baby.">>
<<media "quests/daphIntro/daphne.jpg">>
<<btn>>
<<chunk>>
<p>You need to take your eyes away from those tits, that's the only way. You look at the floor and pull yourself together.</p>
<<dial "player" "All the drawers in my room are kinda full... I don't have any place to put my stuff!">>
<<dial "daphne" "Oh my god! I was going to put $paul.name's stuff in the bags before you came, but I completely forgot!">>
<p>She's visibly embarrased.</p>
<<dial "daphne" "Come with me! I'll do it now!">>
<<btn>>
<<chunk>>
<h2>Your room</h2>
<<media "locations/daphGuest/_big.jpg" "wide">>
<p>You walk back to your room with $daphne.name.</p>
<<dial "daphne" "I'm so sorry about this, hun. Let me just take my son's stuff, and you can unpack in no-time!">>
<<dial "player" "No problem, really! Don't worry about it!">>
<p>This is actually not a lie - you //really// enjoy watching as she clears the drawers one by one. You feel it might be a good idea to help her, but you're afraid to move - she might notice your growing erection.</p>
<<media "quests/daphIntro/luggage1.jpg">>
<<dial "daphne" "I'm just so busy lately, that I forget about everything. Yesterday I forgot to buy milk. And some other day I forgot to wear my panties to work. Can you believe it?">>
<<dial "player" "//Did she just say that she forgot her panties?//">>
<<dial "daphne" "Maybe I'm just getting old?">>
<<btn null "Old?! You look great!" "daphne.love" "dialog">>
<<btn null "Oldie but goldie!" "daphne.dom" "dialog">>
<<chunk>>
<<dial "daphne" "Haha, I feel better already, thanks! ">>
<<media "quests/daphIntro/luggage2.jpg">>
<p>The suitcase is almost full. There's one last locker in the corner with $paul.name's things.</p>
<<dial "daphne" "Just this one last locker and we're done!">>
<p>She bends over.</p>
<<dial "daphne" "Oh, it's so big...">>
<p>She pushes her head inside, creating a perfect opportunity for you to take a closer look at her rear.</p>
<<btn "#upskirt" "Take a look" "dom" "action">>
<<btn "#finish" "Be a gentleman and turn away" "love" "action">>
<<chunk null "#upskirt">>
<p>You move closer and...</p>
<big>Behold - the ass!</big>
<<media "quests/daphIntro/upskirt.mp4">>
<<btn "#finish">>
<<chunk null "#finish">>
<p>$daphne.name finally finishes, pulls her head out of the closet, and smiles to you.</p>
<<dial "daphne" "That's it! It's empty! You can finally unpack.">>
<<dial "player" "Thanks a lot!">>
<<dial "daphne" "Oh, I just realized I also forgot to give you this!">>
<big>$daphne.name hands you the key to the house.</big>
<<delayer>>
<<yields "item:daphHouseKey+">>
<</delayer>>
<p>''You can now go out when you please.''</p>
<<dial "player" "Oh, that's great! Thank you, $daphne.name.">>
<<dial "daphne" "You're a sweet kid!">>
<p>She takes her son's stuff and walks away. You feel sad that she leaves, but at the same time - you just made a first step on a journey that will lead you to those majestic tits. And ass. And pussy. You have no doubt about it.</p>
<big>You finally manage to unpack your things.</big>
<<set $curLoc = "daphGuest">>
<<btn>>
<</chunks>>
<</events>><<events>>
<<EVENT "daphMeatBags=0; $daphBdsmDebuff=0; day=workdays">>
<<include "daphMeatBags">>
/* ===================================================================================================================================================================================================================== */
<<EVENT "alexa.status=4; $alexa.met; randSml">>
<<chunks>>
<<media "activities/nap/wakeup.mp4">>
<p>Suddenly, a strange feeling pulls you out of the dream.</p>
<<dial "player" "What the fuck?!">>
<p>You open your eyes and look around. You're still in the same spot you fell asleep in...</p>
<big>...but there's something very different.</big>
<<btn>>
<<chunk>>
<<media "activities/nap/alexa_blowjob.mp4">>
<p>$alexa.name is giving you a passionate blowjob. She looks at you with an innocent smile.</p>
<<dial "alexa" "I've noticed you have a hard-on while you were asleep, and figured out I'll use you to train on my blowjob skills!">>
<<dial "player" "Oh.">>
<<dial "alexa" "You can go back to sleep if you want.">>
<big>Don't you dare.</big>
<<dial "player" "I think I'll stick around">>
<<btn>>
<<chunk>>
<p>$alexa.name is blowing you like a vacuum cleaner, but it takes you a bit longer than usual to finish.</p>
<<dial "alexa" "You're cumming? //Slurp, slurp, slurp//">>
<<dial "player" "I'm getting there.">>
<<dial "alexa" "I'm bored! //Slurp, slurp, slurp//">>
<<dial "player" "Well... I could play with your pussy?">>
<<if $alexa.status >= 4>>
<<dial "alexa" "Pussies are for pussies. I have a different idea...">>
<p>She drops her panties.</p>
<<dial "alexa" "You're going to fuck my lil' asshole like Trump fucked Hillary.">>
<p>Ok, maybe not that much...</p>
<big>But I really like her asshole!</big>
<<dial "player" "Prepare to get schlonged!">>
<<btn>>
<<else>>
<<dial "alexa" "I wouldn't know. Pussies are for pussies. Anyway, I had enough of training. Thanks!">>
<p>She stand up and leaves you with a raging hard-on.</p>
<<dial "player" "Wait... I was close!">>
<p>She smiles.</p>
<<dial "alexa" "Well... I can finish you up for 30 bucks.">>
<p>She's playing you, bud.</p>
<<menu>>
<<btn "#alexaCum" "Well... ok, I guess." "cash=30; cash-30; alexa.love" "dialog">>
<<btn "#alexaNoPay" "I'm not paying you shit!" "alexa.dom" "dialog">>
<</if>>
<<chunk>>
<<media "activities/nap/alexa_anal.mp4">>
<p>Ohhhh man... This is really the best fucking asshole in the world.</p>
<<dial "alexa" "Do you like it? Do you like my asshole?">>
<<dial "player" "Does the Pope shit in the woods?">>
<p>She hesitates for a moment.</p>
<<dial "alexa" "Does he?">>
<<dial "player" "I think he does... I've heard it in a movie.">>
<big>Focus god damn it!</big>
<<btn>>
<<chunk>>
<p>It doesn't take long until you feel a growing pressure in your dick.</p>
<<dial "alexa" "Now pay me $30.">>
<<dial "player" "What?! You said it's training!">>
<<dial "alexa" "Cumming costs.">>
<p>She's playing you, bud.</p>
<<menu>>
<<btn "#alexaCum" "Well... ok, I guess." "cash=30; cash-30; alexa.love" "dialog">>
<<btn "#alexaNoPay" "I'm not paying you shit!" "alexa.dom" "dialog">>
<<chunk null "#alexaNoPay">>
<p>She looks at you with a smile.</p>
<<dial "alexa" "Is that so?">>
<<dial "player" "It is. I had enough of your games!">>
<p>She thinks for a moment....</p>
<<if $alexa.status >= 5>>
<<dial "alexa" "Ah, fuck it. I'm gonna finish you for free.">>
<<btn "#alexaCum" null "alexa.dom+">>
<<else>>
<<dial "alexa" "Well then. Happy blue balls, dweeb.">>
<p>She blows you a kiss and walks away.</p>
<big>That was a good decision, kid.</big>
<p>You can always rub one out.</p>
<<btn $curLoc>>
<</if>>
<<chunk null "#alexaCum">>
<p>Her lips wrap around your dick again and after just couple seconds...</p>
<<dial "player" "I'm going to cum!">>
<<dial "alexa" "In my mouth!">>
<p>She kneels in front of you and starts tickling your balls with her fingers. That's more than enough to bring you over the edge.</p>
<<media "activities/nap/alexa_cumshot.mp4">>
<p>You arch back as the first spurt of cum shoots out from your giant dick. And then another, and another. $alexa.name catches it all in her mouth and on her face.</p>
<<dial "player" "Oh... fuck.">>
<p>You sigh.</p>
<<dial "alexa" "Tasty cum.">>
<p>She blows you a kiss and walks away.</p>
<<btn $curLoc null "jerkedoff+">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "daphne.status=4; $daphne.met; $dream=fucked; randSml">>
<<chunks>>
/* Construct array with answers to questions */
<<set _questions to [1, 5, 7]>>
<<set _answers to []>>
<<for _q to 0; _q < _questions.length; _q++>>
<<for _a to 0; _a < 3; _a++>>
<<set _question = _questions[_q]>>
<<if _a == 0>>
<<set _answers[_q] to []>>
<</if>>
<<if _a < 2>>
<<set _randD to Math.floor(Math.random()*(_dreams[_question].length))>>
<<set _answers[_q].push({
dial: _dreams[_question][_randD].replace(/your/gi, "my"),
reward: null
})>>
<<set _dreams[_question].splice(_randD, 1)>>
<<else>>
<<set _answers[_q].push({
dial: _dreamsArray[_question].dial,
reward: "daphne.love+"
})>>
<</if>>
<</for>>
<<set _answers[_q] = _answers[_q].shuffle()>>
<</for>>
/* Clear the answers just in case */
<<set $answer0 = null>>
<<set $answer1 = null>>
<<set $answer2 = null>>
<<media "activities/nap/wakeup.mp4">>
<p>Suddenly, a strange feeling pulls you out of the dream.</p>
<<dial "player" "What the fuck?!">>
<p>You open your eyes and look around. You're still in the same place you fell asleep in...</p>
<big>...but there's something very different.</big>
<<btn>>
<<chunk>>
<<media "activities/nap/daphne_titjob.mp4">>
<p>$daphne.name is rubbing her majestic tits on your dick. She smiles like an angel seeing you're awake.</p>
<<dial "daphne" "Did I wake you up, hun?">>
<<dial "player" "Uhmmm... Yes?">>
<<dial "daphne" "Oh gosh, I'm so sorry! I had a few drinks... and I noticed your incredible hard-on... I just couldn't help myself.">>
<<dial "player" "It's... It's really not a problem.">>
<<dial "daphne" "Do you want me to stop?">>
<p>I bet my dick that I know the answer to that question.</p>
<<dial "player" "Noooo! Feel free to... you know...">>
<<dial "daphne" "Super! What were you dreaming about?">>
<p>Oh brother, I'm not sure if you should tell her this fucking dream. Than again - sometimes honesty yields surprising results.</p>
<<menu>>
<<btn "#daphneTruth" "Tell her the truth about the dream" "daphne.love+" "action">>
<<btn "#daphneLie" "It was a dream about you!" "daphne.dom+" "dialog">>
<<chunk null "#daphneTruth">>
<<delayer>>
<script>
document.getElementById("dream").style.display = "none";
document.getElementById("cheater").style.display = "block";
</script>
<</delayer>>
<<dial "player" "It was pretty fucked up to be honest...">>
<p>She stops rubbing her tits against your dick and looks at you with scared eyes.</p>
<<dial "daphne" "I hope it wasn't a nightmare?">>
<p>Go over with it!</p>
<<dial "player" "No, no, no. It was... about... It's a bit hard to explain.">>
<p>She resumes working on your cock.</p>
<<dial "daphne" "I like it when it's hard.">>
<p>You sigh.</p>
<<dial "player" "Well... so the dream started really strange. I was _dreamsArray[0].dial. And it was happening during... during...">>
<p>You hesitate for a moment.</p>
<big>Come on, you have to remember!</big>
<<menu>>
<<for _a0 to 0; _a0 < _answers[0].length; _a0++>>
<<btn null `"..." + _answers[0][_a0].dial + "!"` `"$answer0+" + _a0 + "; " + _answers[0][_a0].reward` "dialog yieldsHide">>
<</for>>
<<chunk>>
<p>She stops again - squinting her eyes.</p>
<<media "activities/nap/daphne_listening1.jpg">>
<<dial "daphne" "Whaaat?">>
<<dial "player" "I told you it was fucked up.">>
<p>She thinks for a moment.</p>
<<dial "daphne" "It kinda is... But I wanna hear the rest!">>
<<btn>>
<<chunk>>
<big>She sucks your dick for encouragement.</big>
<<media "activities/nap/daphne_listening2.mp4">>
<<dial "player" "So... Uhmmm...">>
<p>It's very hard to stay focused, but you're trying really hard.</p>
<<dial "player" "I was strolling around _dreamsArray[2].dial in _dreamsArray[3].dial...">>
<<dial "daphne" "Mhmm... //Slurp, slurp, slurp...//">>
<<dial "player" "When suddenly - I noticed a _dreamsArray[4].dial. So I walked out to her to get a closer look at her... her...">>
<<menu>>
<<for _a1 to 0; _a1 < _answers[1].length; _a1++>>
<<btn null `"..." + _answers[1][_a1].dial + "!"` `"$answer1+" + _a1 + "; " + _answers[1][_a1].reward` "dialog yieldsHide">>
<</for>>
<<chunk>>
<p>She raises her eyebrow but doesn't stop.</p>
<<dial "daphne" "//Slurp, slurp, slurp...//">>
<<delayer>>
<<set _answer = _answers[1][$answer1].dial>>
<<dial "player" `"And I told her... I mean the " + _dreamsArray[4].dial + ", not the " + _answer + "... Talking to the " + _answer + ", that would be stupid... ha... ha..."`>>
<</delayer>>
<big>Focus god damn it!</big>
<<btn>>
<<chunk>>
<<dial "player" "So anyway... Where was I...? So I told her - _dreamsArray[6].dial">>
<p>$daphne.name looks at you with a strange expression.</p>
<<dial "daphne" "Mmm?! //Slurp, slurp, slurp...//">>
<<dial "player" "Yeah, I know. I was surprised myself that I said it... And then she looked at me and said... and said...">>
<<menu>>
<<for _a2 to 0; _a2 < _answers[2].length; _a2++>>
<<btn null _answers[2][_a2].dial `"$answer2+" + _a2 + "; " + _answers[2][_a2].reward` "dialog yieldsHide">>
<</for>>
<<chunk>>
<p>$daphne.name stops and thinks.</p>
<<delayer>>
<<set _answer = _answers[2][$answer2].dial.replace(/[.]/gi, "") + "?">>
<<dial "daphne" _answer>>
<</delayer>>
<<dial "player" "That's what she said...">>
<<media "activities/nap/shesaid.mp4">>
<<dial "player" "But for real!">>
<<dial "daphne" "And you got a hard-on from that?! That's pretty fucked up...">>
<<dial "player" "Well, no, I got a hard-on from fucking her later on.">>
<p>She smiles.</p>
<<dial "daphne" "Haha, you're funny.">>
<<btn "#daphneContinue">>
<<chunk null "#daphneLie">>
<<dial "daphne" "Me?! It's so sweet!">>
<p>She spits between her tits and speeds up.</p>
<<media "activities/nap/daphne_sweet.mp4">>
<<dial "daphne" "And what happened then?">>
<<dial "player" "Then...? Well... we fucked!">>
<<dial "daphne" "Just like that?">>
<<dial "player" "Well... It was a great fuck.">>
<<dial "daphne" "Oh, hun!">>
<<if $daphne.status >= 4>>
<<btn "#daphneContinue">>
<<else>>
<<btn "#daphneEnd">>
<</if>>
<<chunk null "#daphneEnd">>
<p>She smiles to you.</p>
<<dial "daphne" "Ok hun, cum quickly because I have to make myself a drink.">>
<<dial "player" "But...">>
<<dial "daphne" "I SAID CUM QUICKLY!">>
<<media "activities/nap/daphne_despair.mp4">>
<p>Bit of advice, dude.</p>
<big>Never go between a raging alcoholic and a drink.</big>
<p>Just don't.</p>
<<btn>>
<<chunk>>
<<dial "player" "Ok, ok, I'm cumming!">>
<p>That's my boy! Back in the game!</p>
<<dial "daphne" "Let me taste it!">>
<p>She kneels in front of you. The view of her on her knees with her mouth open ready for your sperm is more than enough to bring you over the edge.</p>
<<media "activities/nap/daphne_cumshot.mp4">>
<p>You arch back as the first spurt of cum shoots out from your giant dick. And then another, and another. $daphne.name catches it all in her mouth and on her face.</p>
<<dial "player" "Oh... fuck.">>
<p>You sigh.</p>
<<dial "daphne" "Yummy cummy! This was really great, hun. We have to do it again some day!">>
<p>She blows you a kiss, gathers her clothes and aims straight for the liquor cabinet, leaving you half dead.</p>
<<btn $curLoc>>
<<chunk null "#daphneContinue">>
<<delayer>>
/* Remove not needed vars */
<<unset $answer0>>
<<unset $answer1>>
<<unset $answer2>>
<</delayer>>
<<dial "daphne" "You deserve something nice in return. What about a handjob?">>
<<dial "player" "YES!">>
<p>Shit, are you not learning anything here? Look, we both know that you'd gladly suck on her asshole after she had taken a dump, but for the love of God - don't show it. You need to make her think you don't fucking care.</p>
<<dial "player" "...I mean... yea, a handjob? Maybe, I guess?">>
<p>A bit better. Though next time present more confidence.</p>
<<dial "daphne" "You don't feel that stoked about it. Maybe you prefer something else instead?">>
<p>See? Take the foot out of the gas pedal and options will present themselves to you.</p>
<<menu>>
<<btn "#daphneHandjob" "Handjob is all I dream about!" "daphne.dom+1" "dialog">>
<<btn "#daphneSucking" "I actually want to suck on your tits!" "daphne.love+1" "dialog">>
<<btn "#daphneRiding" "Ride me like a horse!" "daphne.status=5; daphne.love+2" "dialog">>
<<chunk null "#daphneHandjob">>
<p>You don't have to say it twice - $daphne.name falls on her knees and grabs your dick like a pro.</p>
<<media "activities/nap/daphne_handjob.mp4">>
<<dial "daphne" "Like that?">>
<<dial "player" "Uhhhh...">>
<p>You wonder how many dicks she treated with her gentle hands. And the answer is probably hundreds. Somehow, it doesn't bother you at all.</p>
<<btn "#daphneCum">>
<<chunk null "#daphneSucking">>
<<media "activities/nap/daphne_tits.mp4">>
<<dial "daphne" "Oh yeah, hun, suck on those titties.">>
<p>Her boobs are heavy and full, like two ripe grapefruits. When you suck em, $daphne.name is moaning and groaning, running her fingers through your hair.</p>
<<dial "daphne" "Mmmm...">>
<p>You can feel she can barely hold herself.</p>
<<btn>>
<<chunk>>
<<dial "daphne" "Give me your balls!">>
<<media "activities/nap/daphne_balls.mp4">>
<p>You do as she pleases, and she grabs your testicles. At first gently, but then she starts pulling a bit stronger, while massaging your cock.</p>
<<dial "daphne" "You like that?">>
<p>With her boob still in your mouth you're barely able to answer.</p>
<<dial "player" "Ffffummmcueaa...">>
<p>That's a //fuck yea!//</p>
<<btn "#daphneCum">>
<<chunk "daphne.status=4" "daphneRiding">>
<p>You don't have to say it twice - $daphne.name jumps on you and slips your dick into her wet pussy.</p>
<<media "activities/nap/daphne_riding.mp4">>
<p>All you can look at are her tits, bouncing left and right, but quite honestly there's nothing better to look at in the entire world.</p>
<<dial "daphne" "Fuck me! Fuck me! Fuck me!">>
<<dial "player" "I am! I am! I am!">>
<p>I think it was kind of rhethorical, buddy, but it's good you're still paying some attention.</p>
<<btn "#daphneCum">>
<<chunk null "#daphneCum">>
<p>It doesn't take long until you feel a growing pressure in your dick.</p>
<<dial "player" "I'm going to cum!">>
<<dial "daphne" "Let me taste it!">>
<p>She kneels in front of you. The view of her on her knees with her mouth open ready for your sperm is more than enough to bring you over the edge.</p>
<<media "activities/nap/daphne_cumshot.mp4">>
<p>You arch back as the first spurt of cum shoots out from your giant dick. And then another, and another. $daphne.name catches it all in her mouth and on her face.</p>
<<dial "player" "Oh... fuck.">>
<p>You sigh.</p>
<<dial "daphne" "Yummy cummy! This was really great, hun. We have to do it again some day!">>
<p>She blows you a kiss, gathers her clothes and aims straight for the liquor cabinet, leaving you half dead.</p>
<<btn $curLoc>>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "!alexa; $alexa.met; randSml">>
<<chunks>>
<<media "interruption.mp4">>
<p>You wake up from a dream in the middle of the night, with a feeling there's someone in your room.</p>
<<media "activities/sleep/alexa.jpg">>
<p>You cautiously look around and notice ''$alexa.name'' going through your belongings, probably looking for money. She didn't see you yet, but if you won't do something - she might rob you!</p>
<<menu>>
<<btn "#alexaWait" "Wait and see what happens" "alexa.love" "action">>
<<btn "#alexaTalk" "Hey baby, what is you doin'?!" "alexa.dom" "dialog">>
<<chunk null "#alexaWait">>
<p>You watch $alexa.name going through your trousers, and taking money out of your wallet. She smiles to herself.</p>
<<dial "alexa" "I knew he's loaded. It might be a good idea to get close to this dude!">>
<p>$alexa.name takes a glance at you...</p>
<<if $alexa.status > 1>>
<<btn "#alexaLook">>
<<else>>
<<btn "#alexaFinish">>
<</if>>
<<chunk null "#alexaFinish">>
<p>...and a moment later she moves to the doors before you manage to do anything.</p>
<<media "activities/sleep/alexa_run.mp4">>
<<dial "player" "Hey, you!">>
<big>It's too late, she's already gone.</big>
<<set _stolenAmount = $player.cash < 50 ? $player.cash : 50>>
<<btn $curLoc "Bummer" `"cash-" + _stolenAmount` "yieldsHide">>
<<chunk null "#alexaLook">>
<p>$alexa.name hesitantly comes closer to your bed. You have your eyes closed, but you manage to peek at her - it seems she's just standing there, looking down on you...</p>
<<media "activities/sleep/alexa_curious.jpg">>
<<dial "player" "//What the fuck is she doing?//">>
<<btn>>
<<chunk>>
<p>Suddenly you feel $alexa.name's hand reaching under the blanket.</p>
<<dial "player" "//She's going straight for the cock!//">>
<p>Her hand is cold, and when she wraps it around your dick you barely manage to hold in a scream.</p>
<<dial "alexa" "Hmm... And he has a nice cock too! Maybe he won't be useless after all.">>
<p>You're not sure if she's teasing you? Does she know you're not asleep? Your dick is growing quickly in her hand, you cannot do anything about it.</p>
<<menu>>
<<btn "#alexaWaitDick" "Don't do anything" "alexa.love" "action">>
<<btn "#alexaCatchDick" "Catch her red-handed" "alexa.dom" "action">>
<<chunk null "#alexaWaitDick">>
<p>$alexa.name plays with your dick for a moment, but quickly loses her interest. She removes her hand from under the blanket.</p>
<<dial "player" "//No, no, no...//">>
<p>Yes, yes, yes, buddy. This is what you get if you're not taking opportunities like that.</p>
<p>$alexa.name turns and walks out the door, and you just lie there, like a pussy.</p>
<p>//A pussy without the pussy//.</p>
<p>Let that sink in.</p>
<<dial "player" "//Next time I will take the initiative.//">>
<p>I'm sure you will, buddy, I'm sure you will. And in the meantime...</p>
<big>...you can always jerk one off!</big>
<<set _stolenAmount = $player.cash < 50 ? "cash-" + $player.cash : "cash-50">>
<<delayer>>
<<pocket _stolenAmount>>
<</delayer>>
<<btn $curLoc>>
<<chunk null "#alexaCatchDick">>
<big>You raise your head and look at $alexa.name.</big>
<<dial "player" "Hey, baby! You've come to see me?">>
<<dial "alexa" "Oh, shit! You're awake... I was just...">>
<p>She's getting really nervous. You cannot let her get away.</p>
<<dial "player" "Why don't you finish what you started?">>
<p>$alexa.name seems to be surprised by your directness. But in a good way. She thinks for a moment...</p>
<<dial "alexa" "For 25 bucks I will...">>
<<media "activities/sleep/dollars.mp4">>
<p>What?! She already stole money from you, and now she wants some on top of that?! You need to make a decision - is it worth it?</p>
<<menu>>
<<btn "#alexaTouch" "Shut up and take my money!" `"cash=25; cash-25; alexa.love"` "dialog">>
<<btn "#alexaNope" "Not worth it." "alexa.dom" "dialog">>
<<btn "#alexaBargain" "And what about the money you took from me?" "player.lvl=3; alexa.dom+2" "dialog">>
<<chunk null "#alexaBargain">>
<<if $alexa.status < 3>>
<p>$alexa.name looks angry.</p>
<<dial "alexa" "What money!? Are you caliing me a thief?!">>
<<dial "player" "I meant... I just... I mean...">>
<big>Golden lips.</big>
<<dial "alexa" "You can't prove anything.">>
<p>Before you manage to do anything - she quickly walks out of the room, leaving you with a huge wood.</p>
<<dial "player" "Damn it!">>
<p>You said it, brother. But don't fret. You just need to be patient. In the meantime - you can always work on your wood yourself.</p>
<<set _stolenAmount = $player.cash < 50 ? "cash-" + $player.cash : "cash-50">>
<<btn $curLoc null _stolenAmount "yieldsHide">>
<<elseif $alexa.status < 5>>
<p>$alexa.name sighs heavily.</p>
<<dial "alexa" "Ooook. I'll give you a freebie">>
<p>Still... she took your money. But honestly, I don't think there's anything you can do right now to get it back... At this point you might as well enjoy what she offers.</p>
<<btn "#alexaTouch">>
<<elseif $alexa.status >= 5>>
<p>$alexa.name sighs heavily.</p>
<<dial "alexa" "Ooook. I'll give it back... and give you a freebie.">>
<p>She pulls out your money from her pocket and throws it on the bed.</p>
<<dial "alexa" "Happy?">>
<<media "yes.mp4">>
<<btn "#alexaTouch">>
<</if>>
<<chunk null "#alexaTouch">>
<<dial "alexa" "Ok, here it goes.">>
<<media "activities/sleep/alexa_touch.jpg">>
<p>You can feel her soft hands as she strokes your giant dick up and down, spits on it, touches and squezees your balls. The view is truly majestic, and it seems like she enjoys it, though maybe not as much like you do.</p>
<<dial "player" "Uhhhhhhhhhh....">>
<p>She's speeding up. Her little hands are like a pump. Relentlessly pushing and pulling, until you're on a verge of ecstasy.</p>
<<btn>>
<<chunk>>
<<dial "alexa" "You like that, bitch boy?">>
<<dial "player" "Uhhhmmmm......">>
<<dial "alexa" "You want me to continue?">>
<<dial "player" "Yeeaaaahhhh....">>
<<dial "alexa" "25 bucks for one minute with my mouth.">>
<<media "say_what.mp4">>
<p>Buddy. She's playing you like a fucking fiddle. You can get a blowjob for free in this town. Hell, you can earn money for getting one.</p>
<<menu>>
<<btn null "Shut up and take my money!" `"cash=25; cash-25; alexa.love"` "dialog">>
<<btn "#alexaNope" "Not worth it!" "alexa.dom" "dialog">>
<<chunk>>
<<dial "alexa" "Good doggy.">>
<p>$alexa.name takes down her shirt and puts her lips to your cock.</p>
<<media "activities/sleep/alexa_blow.mp4">>
<p>Oh man, she's a gem. Even I have a boner.</p>
<<dial "player" "I'm getting close...">>
<<dial "alexa" "Maybe you are, maybe you aren't.">>
<<dial "player" "W-What? Don't stop now!!!">>
<p>You're getting distracted. Focus on finishing it!</p>
<<dial "alexa" "One minute is up.">>
<<btn>>
<<chunk>>
<big>She drops your dick like a firecracker.</big>
<<dial "player" "//Noooooooo....//">>
<<dial "alexa" "Cumming costs.">>
<<dial "player" "How much?">>
<p>No. Just no. Don't even think about it. I won't let you. This bitch is playing you, son!</p>
<<dial "alexa" "Fifty.">>
<big>Don't.</big>
<<menu>>
<<btn null "Shut up and take my money!" "cash=50; cash-50; alexa.love" "dialog">>
<<btn "#alexaNope" "Not worth it!" "alexa.dom" "dialog">>
<<chunk>>
<<dial "alexa" "Cum me a river, kid.">>
<p>She jumps on you, and puts your dick in her mouth like a pro.</p>
<<media "activities/sleep/alexa_cum.mp4">>
<<dial "player" "Ohhhh shiiiit.">>
<p>This girl knows what she's doing. It takes you one second to cum. You're pushing wave after wave of thick sperm into her throat. She takes it all and swallows right away like a thirsty cum drinking bitch she is.</p>
<<dial "alexa" "Yummy!">>
<<btn>>
<<chunk>>
<p>Finally - you take a deep breath. You realize you're actually not sure what just happened. It's like a system reset. You look at $alexa.name. She smiles to you.</p>
<<dial "alexa" "Don't tell anyone, or I'll rip your balls off.">>
<<media "activities/sleep/alexa_smile_cum.jpg">>
<p>She puts her shirt back on and quickly walks out of your room.</p>
<<if $alexa.status < 5>>
<<set _stolenAmount = $player.cash < 50 ? "cash-" + $player.cash : "cash-50">>
<<else>>
<<set _stolenAmount = null>>
<</if>>
<<btn $curLoc "Bummer" _stolenAmount "yieldsHide action">>
<<chunk null "#alexaNope">>
<p>$alexa.name looks angry.</p>
<<dial "alexa" "What the fuck do you mean not worth it? You fucking scum, I'm worth every dollar!">>
<<dial "player" "I meant... Of course you are, but... I don't have the cash... right now.">>
<<dial "alexa" "But you still liked my hands on your dick, right?">>
<<dial "player" "It was awesome!">>
<<dial "alexa" "Of course it was. So better have the fucking money next time, dweeb.">>
<p>Before you manage to do anything - she quickly walks out of the room, leaving you with a huge wood.</p>
<<dial "player" "Damn it!">>
<p>You said it, brother. But don't fret. You just need to be patient. In the meantime - you can always work on your wood yourself.</p>
<<if $alexa.status < 5>>
<<set _stolenAmount = $player.cash < 50 ? "cash-" + $player.cash : "cash-50">>
<<else>>
<<set _stolenAmount = null>>
<</if>>
<<btn $curLoc "Bummer" _stolenAmount "yieldsHide action">>
<<chunk null "#alexaTalk">>
<p>You raise your head from the pillow and look at $alexa.name, squinting your eyes.</p>
<<dial "alexa" "Oh, shit! You're awake... I was just... I wanted to tell you, that...">>
<<dial "player" "I'm all ears for you, baby!">>
<<btn>>
<<chunk>>
<p>She hesitates for a moment, before giving you her brand fuck-me smile.</p>
<<media "activities/sleep/alexa_smile.jpg">>
<<dial "alexa" "Actually, I just came to tell you, that I need some help with my homework this week.">>
<p>It's obviously a lie, but at least doing her homework will get you closer with her. Time to play her game.</p>
<<dial "player" "Yeah, baby yeah!">>
<p>What? No. I meant you need to take charge of the situation, not //baby, yeah// her.</p>
<<dial "alexa" "So... that's a //yes//?">>
<<dial "player" "Yea, yea, baby, you're switched on! You're smashing!">>
<p>It takes her a moment to proccess what's going on. And, honestly, I'm not sure either.</p>
<big>Are you on crack?!</big>
<<btn>>
<<chunk>>
<<dial "alexa" "Are you doing \"Austin Powers\"?">>
<p>Oh shit, she's right! You were doing "Austin Powers"! Kinda pathetic tbh.</p>
<<dial "player" "No, I'm not. That's how I always speak!">>
<<dial "alexa" "No, you don't.">>
<p>Just admit it.</p>
<<dial "player" "Well... So what? I like Austin Powers. I don't mean the guy, I mean the movie. I mean, I like the guy too... Not in a sexual way, I mean... I like him in the movie. No homo.">>
<big>Jesus Christ...</big>
<<dial "alexa" "Ah, whatever.">>
<p>She turns and is about to leave. See? This is what happens when you do stupid shit. It's your last chance, buddy. Make a fucking move.</p>
<<menu>>
<<btn "#alexaTalkDom" "What if I told your mum that you wanted to steal from me?" "alexa.dom" "dialog">>
<<btn "#alexaTalkKind" "Sure, I can do your homework." "alexa.love" "dialog">>
<<chunk null "#alexaTalkKind">>
<<dial "alexa" "I know!">>
<<dial "player" "I just want one little kiss from you in return.">>
<p>Now we're talking! $alexa.name stops and thinks for a moment, before turning back to you and leaning in for a surprising kiss. And it's not a regular kiss on the cheek too....</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/kiss.mp4">>
<p>You nearly faint, barely managing to keep it together.</p>
<<dial "alexa" "You're not a bad kisser!">>
<<dial "player" "I practice using my thumb!">>
<<dial "alexa" "Oh shit, kid.">>
<p>She sighs and walks out your room.</p>
<big>Well played, dude...</big>
<<media "not.jpg">>
<<btn $curLoc>>
<<chunk null "#alexaTalkDom">>
<p>She stops.</p>
<<dial "alexa" "W-what?">>
<<dial "player" "I saw you digging through my stuff. You were looking for money.">>
<<dial "alexa" "You can't prove that.">>
<<dial "player" "Well, you're right. It's my word against yours. I just wonder - who would I believe if I were your mother. Me - a nice student, or you. And I'm sure you have a long record of stuff like this... Right, $alexa.name?">>
<p>Ok, buddy. You went a bit dark here. It still might work, because this girl really is a skank, but it's not a way of the alpha male. Remember - balance is the key.</p>
<<btn>>
<<chunk>>
<<dial "alexa" "So? You want me to suck you off?">>
<p>I have a bad feeling about it. It sounds like a trap.</p>
<<dial "player" "Is... is that an option?">>
<p>Good. Always check your options. A bit more confidence would be great, but I like the approach.</p>
<<dial "alexa" "Of course it is an option... If only you like girls biting off your dick with balls, you FUCKING LUNATIC!!!">>
<p>See? I knew it. I fucking knew it. Don't worry, I got your back. In situations like that you don't always have to back off completely. Sucking you off was a bait, but so what? At least you're still in the game. Remember - it is her that set the sexual tone of the conversation, so now - use it. Twist it. Make it fun.</p>
<<dial "player" "If I ever let someone bite off my dick, it would certainly be you...">>
<p>I like it! Strong, but with a compliment hidden in it. Balance!</p>
<<dial "player" "...but I was thinking about something less extreme. Like for example you could just show me your...">>
<<menu>>
<<btn "#alexaTalkTits" "...sweet little titties!" "alexa.love" "dialog">>
<<btn "#alexaTalkAss" "...cinnamon asshole!" "alexa.dom" "dialog">>
<<chunk null "#alexaTalkTits">>
<p>Well, to be honest I'm more of a //let's grab a beer sometimes// kind of a guy, but I guess if it works, it works. And it looks to me, like you hit the mark.</p>
<<dial "alexa" "Fine. Just don't drool too much.">>
<p>$alexa.name pulls her t-shirt up and shows you her valuables.</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/alexa_tits.jpg">>
<<dial "alexa" "Happy?">>
<<dial "player" "They're great, maybe you could also show me...">>
<<dial "alexa" "Fuck off!">>
<p>$alexa.name turns and leaves your room. Remember buddy - don't be greedy. Work on a girl, have patience. Instead of haggling with her for a blowjob, you can actually make her want to give it to you. And, trust me, when they do - it's the best blowjob in the world, with slurping, deepthroating, balls licking and all the nasty stuff.</p>
<<btn $curLoc>>
<<chunk null "#alexaTalkAss">>
<p>Well, to be honest I'm more of a //let's grab a beer sometimes// kind of a guy, but I guess if it works, it works. And it looks to me, like you hit the mark.</p>
<<dial "alexa" "Fine. Just don't drool too much.">>
<p>$alexa.name pulls down her pants and turns her ass towards you.</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/alexa_ass.jpg">>
<<dial "alexa" "Happy?">>
<<dial "player" "Uhhhhhh....">>
<p>Braindead, again. You need a fucking second heart to support this dick, god damn it.</p>
<<dial "alexa" "So now - fuck off!">>
<p>$alexa.name pulls up her pants and leaves your room. Well, you went a bit zombie on me in this last part, but in general you got from this situation the most you could, so that's a positive. Just remember, asking a girl to show you her things is a risky business. But you can actually make her //want// to show it to you. And, trust me, when they do, you're gonna like it.</p>
<<btn $curLoc>>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "!daphne; $daphne.met; randSml">>
<<chunks>>
<<media "interruption.mp4">>
<p>You wake up from a dream in the middle of the night with a feeling there's someone in your room. You look around and see ''$daphne.name'' standing by your bed.</p>
<<media "activities/sleep/daphne.jpg">>
<p>It takes you a moment before it hits you - she's drunk.</p>
<big>Drunk as a skunk.</big>
<p>And as we all know - drunk women make rush and irrational decisions. Is that what you're experiencing? Did she come here to fuuuuuuck?!</p>
<<dial "player" "//Fuck yea!//">>
<p>She didn't see you yet, so the ball is in our court. This means decision time, pal!</p>
<<menu>>
<<btn "#daphneSleep" "Pretend you're asleep to not spook her" "daphne.love" "action">>
<<btn "#daphneTalk" "What are you doing here?!" "daphne.dom" "dialog">>
<<chunk null "#daphneSleep">>
<<media "hiding.mp4">>
<p>$daphne.name is making circles in the darkness, and makes a mess wherever she moves, throwing stuff on the floor and cursing.</p>
<<dial "daphne" "Whaaat the... Whereee's my... Huh?">>
<p>You watch from under the blanket how she slowly unbuttons her shirt...</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/daphne_tits.jpg">>
<p>You barely manage to stay quiet seeing those melons. You'd bit them, squeeze them, lick them... But you don't want to scare her away.</p>
<big>Especially that $daphne.name is now crawling into your bed.</big>
<<dial "player" "//Thank you, God!//">>
<p>Suddenly - $daphne.name notices something is wrong.</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/daphne_surprised.jpg">>
<<dial "daphne" "Wwhaaiss... he... doin'... here?">>
<<dial "player" "//Please, God, let me spend this night with those melons, she can even throw up on me, I don't care!//">>
<p>She looks around, confused.</p>
<<dial "daphne" "Waaait-- a minute... Wheerre am I? It's not my bed...">>
<p>There goes the hopes that she came here for a drunk fuck! She probably just mistook your room as her bedroom.</p>
<big>Bummer!</big>
<<menu null null "yieldsHide">>
<<btn "#daphneSleepEnd" "Keep pretending you're asleep" "daphne.love-" "action yieldsHide">>
<<btn "#daphneHelp" "It's ok, I'll help you get to your room." "daphne.love+" "dialog yieldsHide">>
<<btn "#daphneSexOffer" "Me and my diamond hard dick were waiting!" "daphne.dom" "dialog yieldsHide">>
<<chunk null "#daphneSleepEnd">>
<p>You decide to pretend you're still asleep, hoping that maybe she will pass out next to you.</p>
<big>But she didn't.</big>
<p>$daphne.name quickly realizes her mistake and decides to get out of your room, mumbling something to herself.</p>
<<dial "daphne" "Good heee didn't wake... //sighs// Such a nice boy... One day I might actually... With him.... One day.">>
<<dial "player" "//So close and yet so far...//">>
<p>Treat it as a lesson, bud. The love path doesn't always yield results. You need to take action sometimes, even if it means a bit of risk. Otherwise, well, no one will notice you.</p>
<<btn $curLoc>>
<<chunk null "#daphneTalk">>
<p>$daphne.name looks at you with her big, round eyes.</p>
<<media "big_eyes.mp4">>
<<dial "daphne" "Wwhaaiss... you... doin'... here?">>
<p>She looks around, confused.</p>
<<dial "daphne" "Waaait-- a minute... Wheerre am I? It's not my bed...">>
<p>There goes the hopes that she came here for a drunk fuck! She probably just mistook your room as her bedroom.</p>
<big>Bummer!</big>
<p>Well, you cannot leave a lady in distress, right?</p>
<<menu>>
<<btn "#daphneHelp" "It's ok, I'll help you get to your room." "daphne.love+" "dialog">>
<<btn "#daphneSexOffer" "I know what you came here for." "daphne.dom+" "dialog">>
<<chunk null "#daphneSexOffer">>
<p>This is a bold statement dude. $daphne.name looks at you unsure what you mean.</p>
<<dial "daphne" "Aaammansuuure whaaatyou me-ean.">>
<<media "activities/sleep/daphne_drunk.mp4">>
<p>Well, you went too far to back out now.</p>
<big>Make your move!</big>
<<btn>>
<<chunk>>
<p>You get closer to her, and reach to those gigantic melons...</p>
<<media "activities/sleep/daphne_approach.mp4">>
<p>$daphne.name looks at you unsure what is happening. She slowly gathers all the pieces - hands on her tits, your growing erection... This is the last moment - either she'll accept it and you fuck, or she won't and you're fucked.</p>
<big>Fingers crossed, buddy.</big>
<<media "wheel_spin.mp4">>
<<if $daphne.status <= 1>>
<<set _decision = ["#daphneSmack", "#daphneSmack", "#daphneSmack", "#daphneSmack", "#daphneSex"].random()>>
<<elseif $daphne.status == 2>>
<<set _decision = ["#daphneSmack", "#daphneSmack", "#daphneSmack", "#daphneSex"].random()>>
<<elseif $daphne.status == 3>>
<<set _decision = ["#daphneSmack", "#daphneSex"].random()>>
<<elseif $daphne.status == 4>>
<<set _decision = ["#daphneSmack", "#daphneSex", "#daphneSex", "#daphneSex"].random()>>
<<elseif $daphne.status >= 5>>
<<set _decision = ["#daphneSex"].random()>>
<</if>>
<<menu null null "single wildcard">>
<<btn _decision "Roll the dice!" null "action wildcard">>
<<chunk null "#daphneSmack">>
<<media "smack.mp4">>
<<delayer>>
<<yields "daphne.desire-2; sore+" "dialog">>
<</delayer>>
<big>Ohhhhh shhhhiiiiiittt....</big>
<p>God damn it, man, you got wrecked. That blow could end a heavyweight career.</p>
<<dial "daphne" "Doooontyu eeever... eeever... ever... evrrr...">>
<p>She seems to forget what she was talking about.</p>
<<dial "daphne" "Whaaaaeeever.">>
<p>She stands up, barely manages to get to the door, and disappears on the corridor.</p>
<p>Hopefully in the morning she won't remember what just happened. If not - you're fucked.</p>
<big>Fingers crossed!</big>
<<btn $curLoc>>
<<chunk null "#daphneSex">>
<<media "activities/sleep/daphne_ready.mp4">>
<p>$daphne.name closes her eyes and embraces your touch.</p>
<<delayer>>
<<yields "daphne.desire+" "dialog">>
<</delayer>>
<p>She slowly lies down to give you a better view of her grand jewels.</p>
<<if $daphne.status < 4>>
<p>Gotta tell you, man, this was a risky decision, but it paid out.</p>
<</if>>
<big>I wish you a good fuck, you deserved it!</big>
<<btn "sex" "Fuck her brains out!" "$char+daphne" "sex action">>
<<chunk null "#daphneHelp">>
<p>You decide to help her find her room.</p>
<<dial "player" "Hey, let me help you!">>
<<dial "daphne" "T-thaaanks hun. I had a looong and haaaaaaard day and I'm sooo tired...">>
<p>You manage to lead her out of your room, and to her bedroom.</p>
<<media "activities/sleep/help.mp4">>
<<btn>>
<<chunk>>
<h2>$daphne.name's bedroom</h2>
<<media "locations/daphRoom/_big.jpg" "wide">>
<p>$daphne.name collapses on her bed. You're about to leave, but you notice that she's doing something with her bra.</p>
<<dial "daphne" "Whaaat rrr you standing liiike thaat... help mee...">>
<p>You realize she's talking about you helping her take off her undergarment. YOU HELPING HER TAKE OFF HER... You gasp, nearly fainting.</p>
<<dial "player" "//Thank you, God. Thank you!//">>
<<media "yes_maam.mp4">>
<p>You get closer to $daphne.name from behind and unpin her bra. She takes it off and immediately throws it on the floor.</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/daphne_naked.jpg">>
<<dial "daphne" "You'reee such a goooood boy... One day I'll... I'll... I'll let you...">>
<p>You didn't catch that last part, because she fell asleep. For a moment you consider walking back to your room... but then you realize that an opportunity like that might not happen again.</p>
<<menu>>
<<btn "#daphneCum" "Jerk off" "daphne.dom" "action">>
<<btn $curLoc "Be decent and walk away" "daphne.love" "action">>
<<chunk null "#daphneCum">>
<p>You pull out your thing and start jerking off.</p>
<<dial "player" "Come to papa!">>
<<media "activities/sleep/daphne_tits2.jpg">>
<p>You move your hand up and down, fixating on those two giant melons. They're so big. You'd like to suck them. Bite them. Fuck them. You feel the orgasm is near.</p>
<<btn>>
<<chunk>>
<<media "activities/sleep/daphne_cum.mp4">>
<p>You feel ecstasy and relief, spraying your thick cum on those boobs. It's like they were made for this.</p>
<<dial "player" "//Phew!//">>
<p>It takes you a moment to come back, when suddenly - you hear $daphne.name muttering something.</p>
<big>Get the fuck out!</big>
<<btn $curLoc null "jerkedoff+">>
<</chunks>>
<</events>><<events>>
<<EVENT "!daphne; $daphne.met">>
<<chunks>>
<<media "interruption.mp4">>
<p>Suddenly the doors open and ''$daphne.name'' enters the room.</p>
<<media "daphne" "portrait">>
<<dial "daphne" "Hey, I forgot to tell you--">>
<p>You manage to cover your junk at the last moment, but $daphne.name saw it anyway. She's in shock.</p>
<<dial "daphne" "Ohhh no! I'm so sorry! I didn't know that you're...">>
<p>She's sorry, but she keeps peeping at your crotch.</p>
<<btn>>
<<chunk>>
<<media "activities/masturbation/daphne_peek.jpg">>
<p>The thing is - with hands on your dick you cannot close your laptop, and by //pure coincidence// you were just looking at a pic of a big titty momma just like $daphne.name getting rough fucked by a postman.</p>
<p>She moves her eyes to the screen and...</p>
<<dial "daphne" "Ohhh...!">>
<<btn>>
<<chunk>>
<<media "activities/masturbation/laptop_porn.jpg">>
<p>She sees the resemblance right away. A small smile appears on her face.</p>
<<dial "daphne" "I'll leave you to it...">>
<<menu null null "yieldsHide">>
<<btn "#daphneLove" "Wait... I was just thinking about you." "daphne.love+" "dialog yieldsHide">>
<<btn "#daphneDom" "Maybe you'd help me out?" "daphne.dom+" "dialog yieldsHide">>
<<btn $curLoc "Ok, sure..." null "dialog">>
<<chunk null "#daphneLove">>
<p>$daphne.name looks you in the eyes, a bit shocked.</p>
<<dial "daphne" "Oh, you were thinking about me, while...?">>
<<dial "player" "Yes. I often think about you.">>
<<dial "daphne" "Is that so?">>
<p>Her stare gravitates towards junk in your hand. You're not sure whether she likes it or not, she just stays like that for couple seconds. And then...</p>
<<btn>>
<<chunk "daphne.status!=2">>
<p>She looks at you angrily.</p>
<<dial "daphne" "Is that what I am to you? Just a pair of tits?!">>
<<dial "player" "But--">>
<<dial "daphne" "Oh, so you just care about my butt?!">>
<big>INCOMING!</big>
<<media "smack.mp4">>
<p>$daphne.name leaves your room. And on this positive note - we end today's show.</p>
<<btn $curLoc null "daphne.love-2" "yieldsHide">>
<<chunk "daphne.status!=3">>
<<dial "daphne" "I guess it's normal for boys your age! Go on, don't worry.">>
<p>She turns to the doors and walks out before you manage to say anything.</p>
<<media "activities/masturbation/daphne_leaves.mp4">>
<p>The doors close and you're left alone.</p>
<<btn $curLoc>>
<<chunk "daphne.status=3">>
<p>$daphne.name looks at you, with sparks in her eyes.</p>
<<dial "daphne" "Well then, it would be rude of me to leave you without something new to think about, right?">>
<big>She unpins her blouse, lifts her skirt and...</big>
<<btn>>
<<chunk "daphne.status=3">>
<<media "activities/masturbation/daphne_sexy.jpg">>
<p>Her giganormous tits nearly explode when she squeezes them together.</p>
<<dial "daphne" "You like 'em?">>
<<dial "player" "I love 'em...">>
<<if $daphne.status>=4>>
<p>$daphne.name smiles. She slowly unpins her blouse and lowers her bra, showing you more of the goods.</p>
<</if>>
<<btn>>
<<chunk "daphne.status=4">>
<<media "activities/masturbation/daphne_tits.jpg">>
<p>You want to shove your face into those tits. You're barely able to hold yourself.</p>
<<dial "player" "They're beautiful!">>
<<dial "daphne" "//They//? And what about me?">>
<<dial "player" "You're beautiful too! All three of you!">>
<<dial "daphne" "So why are you not stroking your cock?">>
<p>Did she just asked you to masturbate in front of her? Well, you can't say no to a lady, right? You reveal your erect penis and start stroking it up and down, just like she asked you to.</p>
<<btn>>
<<chunk "daphne.status=5">>
<p>She seems to enjoy it. She closes her eyes, as she rubs her tits.</p>
<<dial "daphne" "Well, I guess you deserved to get something extra, hun.">>
<p>She takes her skirt off and throws it on the bed. She drops on her knees, and turns ass towards you.</p>
<<dial "daphne" "Enjoy this, $player.name!">>
<<btn>>
<<chunk "daphne.status=5">>
<<media "activities/masturbation/daphne_ass.jpg">>
<p>You're breathless. You're stroking your cock up and down like a mad man, looking at this majestic ass. She smiles seeing your reaction.</p>
<<dial "daphne" "What would you do to put your dick in it?">>
<<dial "player" "Anything. I'd... I'd... I'd kill a man. Or a woman. Or a baby!">>
<<dial "daphne" "Ha, ha. You're funny.">>
<p>You're going to cum in a second. It's closing to you like a train in the dark tunnel. Just one more moment...</p>
<<menu>>
<<btn "sex" "Fuck her brains out!" "$char+daphne" "sex action">>
<<btn "#daphneTits" "Cum on her tits" "daphne.love" "action">>
<<btn "#daphneFace" "Cum on her face" "daphne.dom" "action">>
<<chunk "daphne.status=5" "#daphneTits">>
<p>You quickly get closer to $daphne.name and...</p>
<<media "activities/masturbation/daphne_tits_cumshot.mp4">>
<p>You feel an overwhelming wave, and another, and another, as cum shoots out of your dick. There's so much of it, that you're not sure where it came from, but it doesn't matter, as you tremble under one of the most incredible orgasms in your life. $daphne.name smiles.</p>
<<dial "daphne" "You're a real treat, hun.">>
<p>She winks. You're too exhausted to say anything. You just look at the sperm dripping from her tits.</p>
<p>$daphne.name smiles and stands up. She wipes the sperm off, puts the skirt back on her ass, and walks towards the doors. You know you need to say something, after all - she just help you released. But you're head is empty.</p>
<<dial "player" "Your ass is so... so... so... big.">>
<p>She bursts into laugter.</p>
<<dial "daphne" "You know how to make the girl feel special, hun!">>
<p>She blows you a kiss and leaves your room.</p>
<<btn $curLoc>>
<<chunk "daphne.status=5" "#daphneFace">>
<p>You quickly get closer to $daphne.name and...</p>
<<media "activities/masturbation/daphne_face_cumshot.mp4">>
<p>You feel an overwhelming wave, and another, and another, as cum shoots out of your dick. There's so much of it, that you're not sure where it came from, but it doesn't matter, as you tremble under one of the most incredible orgasms in your life. $daphne.name at first is reluctant to take it on her face, but finally she gives up and accepts a gift of your cum.</p>
<p>Finally, it ends. $daphne.name looks at you slightly impressed.</p>
<<dial "daphne" "Wow! That was something.">>
<p>She winks. You're too exhausted to say anything. You just look at the sperm dripping from her face.</p>
<p>$daphne.name smiles and stands up. She wipes the sperm off, puts the skirt back on her ass, and walks towards the doors.</p>
<<btn $curLoc>>
<<chunk "daphne.status=3">>
<p>You want more... much more... But the show is suddenly over. $daphne.name smiles to you and covers herself.</p>
<<dial "daphne" "You have something to think about now...">>
<p>She winks and turns towards the doors.</p>
<<dial "player" "Wait! Show me more!">>
<<dial "daphne" "Not now, hun. But some day? Who knows.">>
<p>She peeks at you one more time and leaves your room.</p>
<<btn $curLoc>>
<<chunk null "#daphneDom">>
<<dial "daphne" "What... What do you mean?">>
<<dial "player" "I'm sure you know what I mean.">>
<p>You smile to her, pointing at your crotch. She hesitates for a second, but finally decides it's a bit much.</p>
<<dial "daphne" "I should go...">>
<<menu>>
<<btn "#daphneDick" "Show it to her!" "daphne.dom" "action">>
<<btn "#beDecent" "Be decent for once!" "daphne.love" "action">>
<<chunk null "#beDecent">>
<p>$daphne.name backs off towards the corridor.</p>
<<dial "daphne" "Just pretend I wasn't here...">>
<p>Just before leaving - she looks at you one more time with a daring smile.</p>
<<dial "daphne" "...or not.">>
<p>She winks and closes the door behind her.</p>
<<btn $curLoc>>
<<chunk null "#daphneDick">>
<p>You look $daphne.name in the eyes, and remove your hands from the crotch, revealing your erect penis.</p>
<<media "activities/masturbation/player_dick.jpg">>
<<dial "daphne" "Oh...hun... I mean... It's so...">>
<p>She's visibly impressed by the sizes of you member, but she's also embarrased by the whole situation.</p>
<<dial "daphne" "I have to go!">>
<p>She turns away and awkwardly walks out of your room. One thing is clear - she won't forget what she saw anytime soon.</p>
<<btn $curLoc>>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "!alexa; $alexa.met">>
<<chunks>>
<<media "interruption.mp4">>
<p>Suddenly the door slams into the wall as ''$alexa.name'' enters the room.</p>
<<media "alexa" "portrait">>
<<dial "alexa" "I knew you're jacking off!">>
<p>You cover your junk.</p>
<<dial "player" "Hey, you can't enter like that.">>
<<dial "alexa" "Shut the fuck up, dweeb, or I'll tell mum you've molested me!">>
<p>You get quiet.</p>
<<dial "alexa" "Good doggy. Now, show me what you got there.">>
<p>You look at $alexa.name frightened.</p>
<<dial "player" "W-what--">>
<<dial "alexa" "Are you fucking def or stupid? Show your god damn dick, now!">>
<<menu>>
<<btn "#alexaNo" "That would be indecent, m'lady!" "alexa.love" "dialog">>
<<btn "#alexaShow" "Show her your enormous dick" "alexa.dom" "action">>
<<chunk null "#alexaNo">>
<<dial "alexa" "What?! Most of the guys would fucking kill to let me see their dicks!">>
<<media "disappointed.mp4">>
<<dial "player" "Well... I'm just not like the other guys. I'm a keeper.">>
<<dial "alexa" "You're a dweeb, dweeb.">>
<<btn $curLoc>>
<<chunk null "#alexaShow">>
<p>You hesitate for a moment, but finally give in, removing your hands from the crotch and revealing your erect penis to $alexa.name.</p>
<<media "activities/masturbation/player_dick.jpg">>
<<dial "alexa" "God motherfucking damn it! You've got a really fucking nice dick!">>
<<dial "player" "Thanks... I guess?">>
<<media "high_praise.mp4">>
<<btn>>
<<chunk>>
<p>$alexa.name thinks for a moment, looking at your member.</p>
<<dial "alexa" "He's such a good boy, but he looks a bit hungry. Do you like me to feed it?">>
<<dial "player" "//Fuck yea!// I mean... FUCK YEA!">>
<p>$alexa.name smiles and sparks appear in her eyes.</p>
<<dial "alexa" "I thought so...">>
<p>She slowly lifts her skirt up...</p>
<<btn>>
<<chunk "!alexa.status=2">>
<big>...and bursts into castrating laughter.</big>
<<media "activities/masturbation/alexa_laugh.mp4">>
<<dial "alexa" "You lil' dweeb! You didn't think I'll show you my panties, did you?">>
<<dial "player" "Well... I...">>
<<dial "alexa" "Dream on, kiddo.">>
<<dial "player" "Maybe you could show me just a little...?">>
<<dial "alexa" "I could... but I just don't like you enough.">>
<p>You feel betrayed. Your dick is shrinking like a snail. But $alexa.name doesn't walk away - she's still glancing at your penis. Even now it's still impressive and you can see that she likes it.</p>
<p>Finally, after a moment of silence, she looks you in the eyes.</p>
<<dial "alexa" "But keep that nice thing of yours in my sight, and one day I might go crazy.">>
<p>She walks away and closes the doors.</p>
<<btn $curLoc>>
<<chunk "alexa.status=2">>
<<media "activities/masturbation/alexa_sexy.jpg">>
<<dial "alexa" "So... what does he usually eat? He likes redheads?">>
<p>You feel your dick getting even bigger.</p>
<<dial "player" "Fuck yea he does!">>
<<if $alexa.status >= 3>>
<<dial "alexa" "That's good... And what about this?">>
<p>She turns her back towards you, lifting the skirt even higher.</p>
<</if>>
<<btn>>
<<chunk "alexa.status=3">>
<<media "activities/masturbation/alexa_tease.jpg">>
<<dial "alexa" "Is this the right taste for him?">>
<<dial "player" "Ohhh... Whaat?">>
<<dial "alexa" "That's what I thought.">>
<p>$alexa.name smiles.</p>
<<if $alexa.status >= 4>>
<<dial "alexa" "And yet he seems to be still hungry... Let's see what he thinks about my favorite taste of all.">>
<</if>>
<<btn>>
<<chunk "alexa.status=4">>
<<media "activities/masturbation/alexa_ass.jpg">>
<big>Red mist covers your eyes.</big>
<<dial "player" "Uhhhh......">>
<p>You can't help yourself and start stroking your dick.</p>
<<dial "alexa" "Yeah... I knew you'd like my asshole. My lil' pretty cinnamon sunshine. Pretty, right?">>
<<dial "player" "Uhhhhmmm....">>
<p>$alexa.name bites her lip, looking as you masturbate. She puts a finger in her asshole, and another. She rolls her eyes in ecstasy.</p>
<p>You can see it would be real easy to get more from this situation, but you're not sure if you want to stop what you're doing. Your dick feels like it's made of diamond. Like it could cut steel. And at the same time, this immense energy accumulates inside. You're getting close to the finish line.</p>
<<menu null null "sex">>
<<btn "sex" "Fuck her brains out!" "$char+alexa" "sex action">>
<<btn null "Cum now!" null "action">>
<<chunk "alexa.status=4">>
<<media "activities/masturbation/player_cum.mp4">>
<p>You tremble under one of the most incredible orgasms in your life, as cum shoots out of your dick. There's so much of it, that you're not sure where it came from. $alexa.name smiles, but you can see she's also impressed.</p>
<<dial "alexa" "Such a good doggy. You'll do one thing for me?">>
<p>You're out of breath.</p>
<<dial "player" "What... What do you want...?">>
<p>$alexa.name moves real close to you, and whispers in your ear.</p>
<<dial "alexa" "I want to watch as you lick your cum.">>
<p>Ohhh shit, dude. She played you. God damn it, I don't envy you this decision. It seems whatever you're going to do you're fucked. <<if $player.lvl < 3>>There may be a way out but... I'm not sure if you're ready for it.<</if>></p>
<<menu null null "yieldsHide">>
<<btn "#playerLick" "Lick it!" "alexa.dom-" "action yieldsHide">>
<<btn "#playerGross" "Ugh... Gross!" "alexa.love-" "dialog yieldsHide">>
<<btn "#alexaLick" "Tell her to lick it!" "player.lvl=3; alexa.dom+2" "action yieldsHide">>
<<chunk "alexa.status=2">> /* After the story branches out is the best spot to end previous thread */
<p>But the show is suddenly over. She covers herself and sighs.</p>
<<dial "alexa" "That's the end of the feeding for today.">>
<p>You try to keep your cool, but the truth is - you're heart(dick)broken inside.</p>
<<dial "player" "Wait! Maybe...">>
<<dial "alexa" "No //maybe// you fucking little perv... Keep him hungry for me, I might come back.">>
<p>She turns away and quickly leaves the room.</p>
<<btn $curLoc>>
<<chunk "alexa.status=4" "#playerGross">>
<p>$alexa.name seems to be really disappointed by your answer.</p>
<<media "disappointed.mp4">>
<<dial "alexa" "I knew you're a dweeb!">>
<big>She stands up and leaves your room.</big>
<<btn $curLoc>>
<<chunk "alexa.status=4" "#playerLick">>
<p>You hesitate. Licking your own cum? Ugh, buddy, that's straight up gross. But, for her...? Fuck me, I kinda get it. And don't worry...</p>
<big>I won't tell anyone.</big>
<<media "wink.mp4">>
<<dial "alexa" "What are you waiting for...?">>
<p>You look at your own hand. It's covered with sticky white sperm. You smell it... Ugh, not great. You taste it with a tip of your tongue.</p>
<<dial "alexa" "Be a good doggy! Lick it all for mama!">>
<<media "activities/masturbation/alexa_watch1.jpg">>
<p>You take a deep breath. Here it goes.</p>
<<btn>>
<<chunk "alexa.status=4">>
<<media "activities/masturbation/player_lick.mp4">>
<p>You lick it all, as you're told. After a moment it doesn't even taste that bad.</p>
<<dial "alexa" "Yes... Like that... Clean it good...">>
<<media "activities/masturbation/alexa_watch2.jpg">>
<<btn>>
<<chunk "alexa.status=4">>
<p>$alexa.name watches you intensively with a nasty smile. She starts putting a finger in and out of her pussy. Her eyes roll, breath gets heavy.</p>
<<media "activities/masturbation/alexa_watch3.jpg">>
<<dial "alexa" "Ughhh....">>
<big>$alexa.name just came.</big>
<p>She sighs, and her smile slowly fades.</p>
<<dial "alexa" "Thanks... that was... good enough.">>
<<dial "player" "So... That was something... Right?">>
<p>You realize your hand is so clean...</p>
<big>...you could shake the president's dick.</big>
<<dial "alexa" "You're not such a dweeb after all, dweeb.">>
<p>She stands up, blows you a kiss, and walks out of your room.</p>
<<btn $curLoc>>
<<chunk null "#alexaLick">>
<<dial "player" "I have a better idea.">>
<p>You reach your hand towards $alexa.name's face, so that she could smell your sperm. She's not moving away, looking you straight in the eyes.</p>
<<dial "alexa" "Oh... Is that what you like?">>
<<media "yes.mp4">>
<p>She sighs. It's not what she had in mind, but your dick is still huge, and she looks at it with sparks in her eyes.</p>
<<dial "alexa" "What the hell.">>
<<btn>>
<<chunk>>
<<media "activities/masturbation/alexa_lick.mp4">>
<<dial "player" "Oh, yeah, baby, clean it well, clean it good.">>
<p>Your dick is extra sensitive after you cum, but her skill is so good that it almost makes you hard again. You consider getting it up and starting over, but you decide you're too exhausted.</p>
<<dial "alexa" "Mmmm... I love your taste.">>
<<dial "player" "I'm sure you do.">>
<p>She cleans every last drop of sperm, and kisses your dick.</p>
<<dial "alexa" "That was fun!">>
<p>You sigh with relief. It really was fun. Best fun since you remember.</p>
<p>$alexa.name stands up and walks out of your room, leaving you alone with your extra clean dick.</p>
<<btn $curLoc>>
<</chunks>>
<</events>>/* introTravel */
<<chunks>>
<h2>Airport</h2>
<<media "events/intro/airport.jpg" "wide">>
<p>You're standing in the airport with a huge luggage, about to leave on the adventure of your life. Mom couldn't come, but your dad is here with you "for encouragement".</p>
<<media "events/intro/dad1.jpg">>
<<dial "dad" "Son, college is a time of adventure and learning. Learning responsibility.">>
<p>Normally you wouldn't pay too much attention to his annoying blabber, especially since the airport is full of girls just waiting for you to check out their sweaty tits and juicy asses...</p>
<<btn>>
<<chunk>>
<<media "events/intro/airport_girls1.mp4">>
<<dial "player" "//Noooice!//">>
<p>I know, buddy, I know. But keep up the appearances for a bit longer, because, boring or not...</p>
<big>Your dad didn't give you money for the trip yet.</big>
<<dial "dad" "Son. It's going to be hard. Really, really, hard...">>
<<dial "player" "That's //really// interesting!">>
<p>You try to listen to his words, but...</p>
<big>Tits!</big>
<<btn>>
<<chunk>>
<<media "events/intro/airport_girls2.mp4">>
<p>Your dad didn't event notice the girl.</p>
<<dial "dad" "...but you're strong. Really, really, strong and...">>
<<dial "player" "Strong advice, dad!">>
<p>You try to focus...</p>
<big>...it ain't easy.</big>
<<btn>>
<<chunk>>
<<media "events/intro/airport_girls3.mp4">>
<<dial "dad" "...because you're a man. Really, really... man.">>
<<dial "player" "Oh man. I mean... dad. I mean, thank you dad.">>
<big>Finally, your dad reaches into his pocket and...</big>
<<btn>>
<<chunk>>
<big>He pulls out his wallet.</big>
<<dial "dad" "To aid you on your quest, I'm going to give you a certain amount of money as an ''allowance''.">>
<<dial "player" "//Finally!//">>
<<menu>>
/* Help */
<div class="expand help">
<p>Need some help?</p>
<div class="expandContent">
<p>In //Become Alpha// there are two main routes - <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon"> ''//Domination//'' and <img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> ''//Love//''. Throughout the game you gather //experience// in both those routes, and if you gather enough of it - you can //level up//.</p>
<p>Additionally, there's also <img @src="setup.ImagePath+'icons/cash.png'" class="statIcon"> ''Cash'', that you can spent on your rent and can buy nice things with it.</p>
<p>''TL;DR: Domination and Love are very important for $player.name $player.surname.''</p>
</div>
</div>
<<btn null "I'll make you proud, dad." "cash+300" "dialog yieldShow">>
<<btn null "I've studied hard for this." "cash+150; love+5" "dialog yieldShow">>
<<btn null "Knowledge is for pussies." "cash+150; dom+5" "dialog yieldShow">>
<<chunk>>
<<media "events/intro/money.mp4">>
<<dial "dad" "Son, college is a time of adventure and learning--">>
<<dial "player" "You said it already, dad!">>
<<dial "dad" "Did I? Oh, well, I guess all there is to say is... Goodbye, son. I love you. Really, real--">>
<<dial "player" "Bye!">>
<p>You go through the gate, leaving your dad behind.</p>
<big>He stands there for a bit, watching you walk away...</big>
<<btn>>
<<chunk>>
<big>...before his smile fades.</big>
<<media "events/intro/dad2.jpg">>
<<btn>>
<<chunk>>
<big>But you're already far...</big>
<p>...and just a couple minutes later you're sitting in a plane speeding alongside the runway.</p>
<p>You plug your earphones and play some ''<a href="https://www.youtube.com/watch?v=DIsMWG3UuyY&list=PLyHolgprbu8LUT77_2qL-UDoLHKhdNJop" target="_blank"><span>♫tunes♫</span></a>''. The beats bring nice thoughts about the fuck fest that's awaiting you. You've read an online survey that said...</p>
<big>99,9% of girls in college are total sluts.</big>
<p>And the remaining 0,01% will just give you a handjob.</p>
<<dial "player" "//Prepare your holes, bitches...//">>
<<btn "introLA" "Big dick is coming to town!" "time+">> /*[[introLA]]*/
<</chunks>>/* characters */
/* Parse the yields on load */
<<if !$curTags.contains("quest") && !$curTags.contains("events")>>
<<yields null "popup">>
<</if>>
/* Reset the multipliers */
<<resetMulti>>
/* Help */
<div class="expand help">
<p>Need some help?</p>
<div class="expandContent">
<p>The main stat for character is <img @src="setup.ImagePath+'icons/desire.png'" class="statIcon"> ''//Desire//''. Basically - the more //Desire// character has, the higher your ''//Friendship level//'' becomes. And the higher it is, the more positively she'll react to your advances.</p>
<p>The amount of <img @src="setup.ImagePath+'icons/desire.png'" class="statIcon"> the character gets from your actions depends on ''//Multipliers//''. The way it works is this - when you're conversing with someone, and you click a button with <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> - the yield from the button goes through the multipliers (both character's and yours), and then - BAM! - you get ''//Experience//'', she gets //Desire//. Simple, right?</p>
<hr>
<p>As for the ''//Trait//'' - it works the same way as for the player character - it impacts the multipliers for <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon">. But character traits don't change, so basically - if a characters is a //MILF//, she'll stay like that until the end of game.</p>
<hr>
<p>Additionally, you might wonder why so much information is hidden under ''//???//''. Well, you basically don't know a lot about characters at the start, you need to discover it throughout the game, by talking, peeking, even stalking. And you kind of need to know this hidden stuff to successfuly go through //flirt// with the character. You can also pay for a random information about character with //Desire//, but unless you're really stuck - I would advice against it, dude.</p>
<p>That's all folks!</p>
<p>''TL;DR: make her desire your ass.''</p>
</div>
</div>
/* List known characters */
<<set _charsKnown = []>>
<<for _c = 0; _c < setup.characters.length; _c++>>
/* Create char variable and load the character object */
<<set _charVar = '$'+setup.characters[_c]>>
<<set _char = State.getVar(_charVar)>>
<<if _char.type != "npc" && _char.type != "player" && _char.met == 1>>
<<set _charsKnown.push(_c)>>
<</if>>
<</for>>
/* If there's just one known character - we need to mark it, to prevent the scrollbar bug (if popup loads with enough space, but expanding the content makes the content overflow, the scrollbar was not appearing) */
<<if _charsKnown.length == 1>>
<<set _expandOff = 1>>
<</if>>
/* Now go through known characters and print their info */
<<for _ck = 0; _ck < _charsKnown.length; _ck++>>
<<set _charNum = _charsKnown[_ck]>>
<<set _charVar = '$'+setup.characters[_charNum]>>
<<set _char = State.getVar(_charVar)>>
/* Load info about trait */
<<for _chT = 0; _chT < setup.charTraits.length; _chT++>>
<<if setup.charTraits[_chT].id == _char.trait>>
<<set _charTrait = setup.charTraits[_chT].name>>
<<set _charTraitDesc = setup.charTraits[_chT].desc>>
<</if>>
<</for>>
/* We need to turn multipliers into percentages. */
<<set _loveMulti = Math.round(_char.loveMulti * 100)>>
<<set _dominationMulti = Math.round(_char.dominationMulti * 100)>>
/* Fill temporary array with multipliers for tooltips */
<<set _multi = clone($multipliers)>>
<<set _multiArr = []>>
<<for _m = 0; _m < _multi.length; _m++>>
<<if _multi[_m].char == _char.id>>
/* Set missing names (mostly because of the backwards compatibility) */
<<if _multi[_m].type == "trait" && !_multi[_m].name>>
<<set _multi[_m].name = _charTrait>>
<<elseif !_multi[_m].name>>
<<set _multi[_m].name = "Other">>
<</if>>
/* Multiply by 100 to get percentage */
<<set _multi[_m].value = Math.round(_multi[_m].value * 100)>>
/* Save trait multi for display in traitbox */
<<if _multi[_m].type == "trait" && _multi[_m].id == "love">>
<<set _loveMultiTrait = _multi[_m].value>>
<<elseif _multi[_m].type == "trait" && _multi[_m].id == "domination">>
<<set _dominationMultiTrait = _multi[_m].value>>
<</if>>
<<set _multiArr.push(_multi[_m])>>
<</if>>
<</for>>
/* Include week trait multiplier */
<<if _char.trait == $week_trait>>
<<set _loveMulti = _loveMulti * 2>>
<<set _dominationMulti = _dominationMulti * 2>>
<<set _multiArr.push({action: "update", char: _char.id, id: "love", positive: 1, sign: "*", type: "week bonus", value: "200", weight: 20, name: _charTrait})>>
<<set _multiArr.push({action: "update", char: _char.id, id: "domination", positive: 1, sign: "*", type: "week bonus", value: "200", weight: 20, name: _charTrait})>>
<</if>>
<<set _multi = null>>
/* Load info about kink */
<<for _sc = 0; _sc < setup.sexCat.length; _sc++>>
<<if setup.sexCat[_sc].id == _char.kink>>
<<set _charKink = setup.sexCat[_sc].name>>
<<set _charKinkDesc = setup.sexCat[_sc].desc>>
<</if>>
<</for>>
/* Load trivia */
<<for _tr = 1; _tr <= 3; _tr++>>
<<set _trivia = State.getVar("_char.trivia" + _tr)>>
<<set _triviaId = State.getVar("_char.trivia" + _tr + "Id")>>
<<set _head = "favorite " + setup.charTrivia.find(obj => {return obj.id === _trivia}).singular + ": ">>
<<if _trivia == "songs">>
<<set _song = setup.charTrivia.find(obj => {return obj.id === _trivia}).trivia.find(obj => {return obj.id === _triviaId})>>
<<set _triviaText = _head + "<a href=\"https://www.youtube.com/watch?v=" + _song.link + "\" target=\"_blank\"><strong>" + _song.name + "</strong></a>">>
<<set State.setVar("_trivia" + _tr, _triviaText)>>
<<else>>
<<set _triviaText = _head + "<strong>" + setup.charTrivia.find(obj => {return obj.id === _trivia}).trivia.find(obj => {return obj.id === _triviaId}).name + "</strong>">>
<<set State.setVar("_trivia" + _tr, _triviaText)>>
<</if>>
<</for>>
/* Divider (unless it's a first character) */
<<if _firstCharDone>>
<hr>
<<else>>
<<set _firstCharDone = 1>>
<</if>>
/* Character div */
<<if _expandOff != 1>>
<<set _expandClass = "expand more">>
<<else>>
<<set _expandClass = "">>
<</if>>
<div @class="_expandClass">
/* Character info */
<h1 class="center">
_char.name
</h1>
<<media `"characters/" + _char.id + "/portrait_big.jpg"`>>
/* Expandable content */
<<if _expandOff != 1>>
<<set _expandClass = "expandContent">>
<<else>>
<<set _expandClass = "">>
<</if>>
<div @class="_expandClass">
/* Quote */
<<dial _char.id _char.quote "characterStatsDial">>
/* Start the characterStats div */
<div id="characterStats">
/* Character trait */
<div class="traitBox">
<<if _char.traitKnown>>
<h3>Trait: <strong>''_charTrait''</strong></h3>
<span class="statSml">
<img @src="setup.ImagePath+'icons/love.png'" class="statIcon">
<span class="statValue"><span class="statValueSml">×</span> _loveMultiTrait <span class="desc">%</span></span>
</span>
<span class="statSml">
<img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">
<span class="statValue"><span class="statValueSml">×</span> _dominationMultiTrait <span class="desc">%</span></span>
</span>
<<else>>
<h3>Trait:</h3>
?
<</if>>
<p class="desc">
<<if _char.traitKnown>>
_charTraitDesc
<<else>>
You don't know this character's trait yet.
<</if>>
</p>
</div>
/* Character stats */
<div class="statsBox">
<table class="character">
<tr class="header">
<td width="30%"></td>
<td width="15%" class="desc center">Multiplier</td>
<td></td>
<td width="25%" class="desc center">Desire</td>
<td></td>
<td width="15%" class="desc center">Desire Lvl</td>
</tr>
<tr class="statsRow">
<td class="bottomBorder">
<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> ''Love''
</td>
<td class="bottomBorderEnd">
<<if _char.traitKnown>>
<div class="uiData multi tooltip">
<span>_loveMulti</span> <span class="desc">%</span>
<div class="tooltipText">
<table>
<<for _row = 0; _row < _multiArr.length; _row++>>
<<if _multiArr[_row].id == "love">>
<tr>
<td><span class="statValue"><span class="statValueSml">×</span> _multiArr[_row].value <span class="desc">%</span></span></td>
<td>_multiArr[_row].name <span class="statValueSml">(_multiArr[_row].type)</span></td>
</tr>
<</if>>
<</for>>
</table>
</div>
</div>
<<else>>
<div class="uiData multi">
<span>?</span> <span class="desc">%</span>
</div>
<</if>>
</td>
<td class="bracket">
<span>></span>
</td>
<td>
<div class="uiData desire">
<img @src="setup.ImagePath+'icons/desire.png'" class="statIcon">
<<if _char.desireKnown>>_char.desire<<else>>?<</if>>
<span class="desc">pts.</span></div>
</td>
<td class="bracket">
<span>></span>
</td>
<td>
<div class="uiData desireLvl">
<<if _char.desireKnown>><span class="level">_char.status</span><<else>>?<</if>>
<span class="desc">/5</span>
</div>
</td>
</tr>
<tr class="statsRow">
<td>
<img @src="setup.ImagePath+'icons/domination.png'" class="statIcon"> ''Domination''
</td>
<td>
<<if _char.traitKnown>>
<div class="uiData multi tooltip">
<span>_dominationMulti</span> <span class="desc">%</span>
<div class="tooltipText">
<table>
<<for _row = 0; _row < _multiArr.length; _row++>>
<<if _multiArr[_row].id == "domination">>
<tr>
<td><span class="statValue"><span class="statValueSml">×</span> _multiArr[_row].value <span class="desc">%</span></span></td>
<td>_multiArr[_row].name <span class="statValueSml">(_multiArr[_row].type)</span></td>
</tr>
<</if>>
<</for>>
</table>
</div>
</div>
<<else>>
<div class="uiData multi">
<span>?</span> <span class="desc">%</span>
</div>
<</if>>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div class="break"></div>
/* Character kink */
<div class="kinkBox">
<<if _char.kinkKnown>>
<h3>Kink: <strong>_charKink</strong></h3>
<div class="btnImg btnSex">
<p class="btnText">_charKink</p>
<div class="statInfo">
<div class="statInfoPlayer"></div>
<div class="statInfoCharacter">
<div class="uiData">
<img src="media/icons/squirt.png" class="statIcon"> <div class="statValue">+1</div>
</div>
</div>
</div>
<img class="btnImage" @src="setup.ImagePath+'sex/'+_char.kink+'.jpg'">
</div>
<div class="trivia">
_charKinkDesc
</div>
<<else>>
<h3>Kink:</h3>
<div class="btnImg btnSex">
<p class="btnText">?</p>
</div>
<div class="trivia">You don't know what type of sex _char.name likes.</div>
<</if>>
</div>
/* Character trivia */
<div class="triviaBox">
<h3>Trivia</h3>
<p class="trivia"><<if _char.trivia1Known>><<print _trivia1>><<else>>?<</if>></p>
<p class="trivia"><<if _char.trivia2Known>><<print _trivia2>><<else>>?<</if>></p>
<p class="trivia"><<if _char.trivia3Known>><<print _trivia3>><<else>>?<</if>></p>
</div>
<div class="break"></div>
/* Finish the characterStats div */
</div>
/* Learn something about the character if we're in a location */
<<if $curPas == $curLoc>>
<<set _infoArray to [_char.traitKnown, _char.kinkKnown, _char.trivia1Known, _char.trivia2Known, _char.trivia3Known]>>
<<set _infoCost to 20>>
<<set _infoNum to 0>>
<<for _ia to 0; _ia < _infoArray.length; _ia++>>
<<if _infoArray[_ia] == 1>>
<<set _infoCost to Math.round(_infoCost*1.35)>>
<<set _infoNum = _infoNum + 1>>
<</if>>
<</for>>
<<if _infoNum < 5>>
<<set _infoYieldDom = "dom=" + _infoCost + "; dom-" + _infoCost + "; " + _char.id + ".info+">>
<<btn "characters" "Use Domination to get info about _char.name" _infoYieldDom "valueShow">>
<<set _infoYieldLove = "love=" + _infoCost + "; love-" + _infoCost + "; " + _char.id + ".info+">>
<<btn "characters" "Use Love to get info about _char.name" _infoYieldLove "valueShow">>
<</if>>
<</if>>
/* Finish the expandable div */
<div class="break"></div>
<div class="break"></div>
<div class="break"></div>
</div>
/* Finish the character div */
</div>
/* End the character list */
<</for>>
<div class="break"></div>/* TEST */
<<link "<div class=\"btn\">Refresh</div>">>
<<script>>state.display(state.active.title, null, "back")<</script>>
<</link>>
<<if $test>>
<<chunks>>
<big><big class="fire">DON'T PANIC!!!</big></big>
<p>Split the problem into smaller parts, make a checklist, and solve it one by one.</p>
<br><br><br><br><br><br>
<h1>Hash the code</h1>
<<print "DONTCHEAT".hashCode()>>
<br><br><br>
<h1>SPLITTER and PREREQ</h1>
<<set _splitterData = "daphIntro+; !$mia.met; schoolIntro>2; $playerarrest+; $player.arrest+">>
<<print _splitterData>><br>
<<set _splitterResult = splitter(_splitterData)>>
Result:<br>
<<for _i = 0; _i < _splitterResult.length; _i++>>
weight: _splitterResult[_i].weight <br>
positive: _splitterResult[_i].positive <br>
action: _splitterResult[_i].action <br>
type: _splitterResult[_i].type <br>
char: _splitterResult[_i].char <br>
id: _splitterResult[_i].id <br>
sign: _splitterResult[_i].sign <br>
value: _splitterResult[_i].value <br>
<<if _splitterResult[_i].action == "check">>
<<set _splitterNeg = _splitterResult[_i].positive == 1 ? "" : "!">>
<<set _splitterPrereq = _splitterResult[_i].type + ":" + _splitterResult[_i].char + "." + _splitterResult[_i].id +_splitterNeg + _splitterResult[_i].sign + _splitterResult[_i].value>>
PREREQ: <<prereq _splitterPrereq>><<print $prereq>><br>
<</if>><br>
<</for>>
<br><br><br>
<h1>POCKET</h1>
<<set _pocketData = "">>
String <<print _pocketData>><br>
<<pocket _pocketData>><br>
Result: <br><br>
<<for _i to 0; _i < $pocket.length; _i++>>
positive: $pocket[_i].positive <br>
action: $pocket[_i].action <br>
type: $pocket[_i].type <br>
char: $pocket[_i].char <br>
id: $pocket[_i].id <br>
sign: $pocket[_i].sign <br>
value: $pocket[_i].value <br><br>
<</for>>
<br><br><br>
<h1>MULTIPLIERS</h1>
Current multiplier array:<br>
<<for _i to 0; _i < $multipliers.length; _i++>>
type: $multipliers[_i].type <br>
<<if $multipliers[_i].name>>name: $multipliers[_i].name <br><</if>>
char: $multipliers[_i].char <br>
id: $multipliers[_i].id <br>
value: $multipliers[_i].value <br><br>
<</for>>
<br><br><br>
<h1>BUTTONS</h1>
<<btn "TEST" "This is action button" null "action">>
<<btn "TEST" "This is dialog button" null "dialog" "You can replace the button text for longer dialog here">>
<<btn "weekStats" "WEEKSTATS" null "si3">>
<<btn "TEST" "beard+" "effect:beard+" "si">>
<<btn "TEST" "beard-" "effect:beard-" "fi red">>
<<btn "TEST" "playerShave+0" "$playerShave+0" "red fi greenfi">>
<<btn "TEST" "playerShower+0" "$playerShower+0" "fi5 greenfi">>
<<btn "TEST" "sleepless+0" "$sleepless+0">>
<<btn "TEST" "Cash+50" "cash+50">>
<<btn "TEST" "Cash-50" "cash-50">>
<<btn "TEST" "Cash=50" "cash-50; cash=50">>
<<btn "TEST" "Love+5" "love+5">>
<<btn "TEST" "Love-5" "love-5">>
<<btn "TEST" "Daphne.love+1" "daphne.love+1">>
<<btn "TEST" "Daphne.love-1" "daphne.love-1">>
<<btn "TEST" "Alexa.dom+1" "alexa.dom">>
<<btn "TEST" "Alexa.love+1" "alexa.love">>
<<btn "TEST" "Daphne.desire+1" "daphne.desire+1">>
<hr>
<<btn "TEST" "DOMLVL+1" "player.dominationLvl+1">>
<<btn "TEST" "LOVLVL+1" "player.loveLvl+1">>
<hr>
<<btn "TEST" "Yields switch off" "$yieldsOff+; $yieldsOff=null">>
<<btn "TEST" "Yields switch on" "$yieldsOff-; $yieldsOff=1">>
<<btn "TEST" "Test notifications" "player.loveLvl+2; love+10; kamasutra+anal; dom+2; daphne.dom+3; oldcake+; daphAlexKey+; drunk+">>
<hr>
<<btn "TEST" "+items" "item:priest_robe+; item:outfit_18+; item:groin_guard+; item:cap+; item:pompom+; item:weed+; item:crucifix+">>
<<btn "TEST" "-priest_robe" "item:priest_robe-">>
<<btn "TEST" "-groin_guard" "item:groin_guard-">>
<<btn "TEST" "-outfit_18" "item:outfit_18-">>
<<btn "TEST" "+ballsSmash" "effect:ballsSmash+">>
<<btn "TEST" "outfit_18+wear" "item:outfit_18+wear">>
<<btn "TEST" "outfit_18-takeoff" "item:outfit_18-takeoff">>
<<btn "TEST" "weed-use" "item:weed-use">>
<br><br><br>
<h1>scheduleTemp</h1>
<<for _x to 0; _x < $schedTemp.length; _x++>>
<<print $schedTemp[_x][0]>>
<<print $schedTemp[_x][1]>>
<<print $schedTemp[_x][2]>>
<<print $schedTemp[_x][3]>>
<<print $schedTemp[_x][4]>> <br>
<</for>>
<br><br><br>
<big>Get current task of quest</big>
<<set _schoolIntroCur = $player.quests.find(obj => {return obj.id === "schoolIntro"})>>
<<if _schoolIntroCur>>
<big>Current schoolIntro: <<print _schoolIntroCur.active>></big>
<</if>>
<<btn null "schoolIntro+" "schoolIntro+">>
<br><br><br>
<big>SHOWING SOMETHING FOR A QUEST WITH < OR >:</big>
<<wrapper "schoolIntro<2">>
This should show if schoolIntro is lower than 2<br>
<</wrapper>>
<<wrapper "!schoolIntro<2">>
This should show if schoolIntro is NOT lower than 2<br>
<</wrapper>>
<<wrapper "schoolIntro>3">>
This should show if schoolIntro is higher than 3<br>
<</wrapper>>
<<wrapper "!schoolIntro>3">>
This should show if schoolIntro is NOT higher than 3<br>
<</wrapper>>
<br><br><br>
<h1>COUNTERS:</h1>
<<btn "TEST" "counter:counterTest-1" "counter:counterTest-1">>
<<print $counterTest>><br>
''<nowiki>counter:counterTest=null</nowiki>'' - process if counter is 0 or NULL: <<wrapper "counter:counterTest=null">>YES<</wrapper>>.<br>
''<nowiki>counter:counterTest!=null</nowiki>'' - process if counter is NOT 0 or NULL: <<wrapper "counter:counterTest!=null">>YES<</wrapper>>.<br>
''<nowiki>counter:counterTest=0</nowiki>'' - process if counter is 0: <<wrapper "counter:counterTest=0">>YES<</wrapper>>.<br>
''<nowiki>$counterTest=null</nowiki>'' - process if counter VAR is NULL: <<wrapper "$counterTest=null">>YES<</wrapper>>.<br>
''<nowiki>$counterTest=0</nowiki>'' - process if counter VAR is 0: <<wrapper "$counterTest=0">>YES<</wrapper>>.<br>
''<nowiki>!$counterTest</nowiki>'' - process if counter VAR is NULL: <<wrapper "!$counterTest">>YES<</wrapper>>.<br>
<br><br><br>
<big>DRUG EFFECTS:</big>
<<for _ii = 0; _ii < setup.items.length; _ii++>>
<<if setup.items[_ii].illegal>>
<<if $player.itemsList && $player.itemsList.indexOf(setup.items[_ii].id) != -1>>
<<set _iip = $player.items.find(obj => {return obj.id === setup.items[_ii].id})>>
<<if _iip>>
/* Remove items */
<<if !_drugsListTake>>
<<set _drugsListTake = "item:" + _iip.id + "-" + _iip.quantity>>
<<else>>
<<set _drugsListTake = _drugsListTake + "; item:" + _iip.id + "-" + _iip.quantity>>
<</if>>
/* Add effect (apart from trip - we keep it till the end) */
<<if setup.items[_ii].effect != "trip">>
<<set _drugsListTake = _drugsListTake + "; effect:" + setup.items[_ii].effect + "+" + _iip.quantity>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<print _drugsListTake>>
<<btn null "Eat the drugs!" `_drugsListTake` "action">>
<br><br><br>
<h1>Sex positions</h1>
/* List the sex categories */
<<for _sc = 0; _sc < setup.sexCat.length; _sc++>>
/* Display the name of the category */
<h1><<print setup.sexCat[_sc].name>></h1>
/* List the sex positions */
<<for _k = 0; _k < setup.kamasutra.length; _k++>>
<<if setup.kamasutra[_k].sexCat.indexOf(setup.sexCat[_sc].id) != -1>>
/* Display the name of the position */
<h2><<print setup.kamasutra[_k].name>></h2>
<table>
/* Go through the characters */
<<set _tempChars = ["daphne", "alexa", "mia", "rose", "kelly", "karma", "amia", "nina", "bridgette"]>>
<<for _ch = 0; _ch < _tempChars.length; _ch++>>
<<set _tempChar = _tempChars[_ch]>>
<<set _tempCharPos = State.getVar('setup.kamasutra[_k].' + _tempChar)>>
<<if _tempCharPos > 0>>
<<set _tempCharPosNum = "<strong>" + _tempCharPos + "</strong>">>
<<else>>
<<set _tempCharPosNum = "<strong class=\"red\">EMPTY!</strong>">>
<</if>>
/* Check kink */
<<set _tempCharKink = State.getVar('$' + _tempChar + ".kink")>>
<<if _tempCharKink == setup.sexCat[_sc].id>>
<<set _tempCharTxt = _tempChar + " [<img @src=\"setup.ImagePath+'icons/squirt.png'\" class=\"statIcon\">]:">>
<<else>>
<<set _tempCharTxt = _tempChar + ":">>
<</if>>
<tr>
<td style="width: 50%; text-align: right;">_tempCharTxt</td><td style="width: 50%; text-align: left;">_tempCharPosNum</td>
</tr>
<</for>>
</table>
<br class="clear">
<</if>>
<</for>>
<br class="clear">
<</for>>
<</chunks>>
<</if>>/* btn */
/* Draw a button. Arguments: id of next element; link text content; gains, loses, and prerequisites (in one var); additional css classes (including the delay for the timed macro). */
<<widget "btn">>
/* Set vars */
<<set _link = $args[0] ? $args[0] : "">>
<<set _text = $args[1] ? $args[1] : "">>
<<set _stats = $args[2] ? $args[2] : "">>
<<set _classes = $args[3] ? $args[3] : "">>
<<set _dialog = $args[4] ? $args[4] : null>>
<<set _skipYields = null>>
<<set _passage = null>>
<<set _popup = null>>
<<set _tempChar = null>>
<<set _yieldShow = null>>
<<set _yieldsHide = null>>
<<set _valueShow = null>>
<<set _valueInfo = "">>
<<set _errorInfo = "">>
/* If the chunksOn is 1, it's a button within chunks script, otherwise it's an interface button and has to have a passage */
<<if $chunksOn>>
<<set _curChunkId = $chunkId>>
<<set _curBtnId = $chunkId + "_btn_" + $chunkBtnNum>>
<<else>>
<<set _curChunkId = "interface">>
<<set _curBtnId = "btn_" + $chunkBtnNum>>
<</if>>
<<set _curWrapClasses = "">>
/* Update the button number */
<<set $chunkBtnNum = $chunkBtnNum + 1>>
/* We need to make sure that the curQuest was on when the button was drawn, otherwise we won't be able to properly add quest update when the last button was clicked (basically we only pocket a quest update for the buttons that are within the quest event/passage) */
<<set _curQuest = $curQuest>>
/* Allow to draw the button in these conditions:
a) It's not a questMode/lateNight/dreamMode;
b) The button is NOT on location/area (we want all the buttons on events etc. to display), it is an open doors or break in button (otherwise players might not be able to progress quests), we're on an earlyaccess/todo passage (we don't want players to get stuck), or it's an exit/travel/timePass button;
c) It is a questMode and currently displayed quest event or passage, the event we're linking to, or the quest stats contain the same string as questMode var (basically we display everything connected with the questMode quest);
d) It is a dreamMode and currently displayed quest event or passage, the event we're linking to, or the quest stats contain the same string as dreamMode var (basically we display everything connected with the questMode quest), the stats contain string "dreamMode" itself (because during dreamMode everything regarding dreamMode should be active, like wake up button in the therapist office), button link contains strings Enter or Knock and lead to quick passages (we want players during dreamMode to be able to knock/enter different rooms otherwise they might not be able to progress quests), or it's a sleep button (we want players to sleep during dreamMode, to heal their wounds faster etc.);
e) It is a lateNight, and not questMode [shouldn't dreamMode be also here?] and stats contain the string "sleepReset" or "teleport" (for teleporting home); */
<<if (!$questMode && !$lateNight && !$dreamMode) || ((!tags($curPas).contains("location") && !tags($curPas).contains("area")) || (_link == "doorOpen" || _link == "doorBreakIn") || (tags($curPas).contains("earlyAccess") || tags($curPas).contains("todo") || $curPas == "earlyAccess" || $curPas == "todo") || (_classes != "" && (_classes.indexOf("exit") != -1 || (_classes.indexOf("travel") != -1 && !$lateNight) || _classes.indexOf("timePass") != -1))) || ($questMode && ($curQuest == $questMode || _link == $questMode || $curPas == $questMode || _stats != "" && _stats.indexOf($questMode) != -1)) || ($dreamMode && ($curQuest == $dreamMode || _link == $dreamMode || $curPas == $dreamMode || (_stats != "" && _stats.indexOf($dreamMode) != -1 || _stats.indexOf("dreamMode") != -1) || (tags(_link).contains("quick") && (_link.indexOf("Enter") != -1 || _link.indexOf("Knock") != -1)) || (_stats != "" && _stats.indexOf("sleepReset") != -1))) || ($lateNight && !$questMode && ((_stats != "" && _stats.indexOf("sleepReset") != -1) || (_classes != "" && _classes.indexOf("teleport") != -1)))>>
/* If the button has a specific class, and the door prerequisites were not added, we need to add it */
/* 0.3.30 - added "quick" to the list. Now the way to make the button show up on closed door is to add a class "closed". The previous assumption was that quick buttons are only used for peeking through closed doors, breaking in through closed doors, etc.. But quick button sometimes leads to something not related with the doors, and it shouldn't appear when the doors are closed. This change might be problematic, and cause some quick buttons that should appear on closed doors to disappear */
<<if _classes != "" && (_classes.indexOf("activ") != -1 || _classes.indexOf("travel") != -1 || _classes.indexOf("chore") != -1 || _classes.indexOf("relation") != -1 || _classes.indexOf("quest") != -1 || _classes.indexOf("store") != -1 || _classes.indexOf("quick") != -1)>>
<<if _stats == "" || (_stats.indexOf("open") == -1 && _stats.indexOf("closed") == -1 && _stats.indexOf("locked") == -1)>>
<<if _stats != "">>
<<set _stats = _stats + "; open">>
<<elseif _stats == "">>
<<set _stats = "open">>
<</if>>
<</if>>
<</if>>
/* Check the prerequsites and continue only if the prereq is not 3, or it is 3 but also an exit button */
<<prereq _stats>>
<<if $prereq != 3 || ($prereq == 3 && _classes.indexOf("exit") != -1)>>
/* Check if the button has any delaying classes like si or fi, and move them to wrapping span, to avoid conflict of animations, and hide clickable area of a button before it's actually displayed */
<<if _classes>>
<<set _classesDelayArr = ["fi", "fiQ", "fi1", "fi2", "fi3", "fi4", "fi5", "fi6", "fi7", "fi8", "fi9", "si", "siQ", "si1", "si2", "si3", "si4", "si5", "si6", "si7", "si8", "si9"]>>
<<set _classesBtnArr = _classes.split(' ')>>
<<set _classes = "">>
<<set _classesBtnMatchArr = []>>
<<for _cb = 0; _cb < _classesBtnArr.length; _cb++>>
<<set _foundMatchClass = 0>>
<<for _cd = 0; _cd < _classesDelayArr.length; _cd++>>
/* Compare classes of the button with the delayer classes and save matches */
<<if _classesBtnArr[_cb] == _classesDelayArr[_cd]>>
/* On match, add it to the wrapping classes */
<<set _curWrapClasses = _curWrapClasses=="" ? _classesBtnArr[_cb] : _curWrapClasses + " " + _classesBtnArr[_cb]>>
<<set _foundMatchClass = 1>>
<</if>>
<</for>>
/* Rebuild the button classes, without the matches */
<<if !_foundMatchClass>>
<<set _classes = _classes=="" ? _classesBtnArr[_cb] : _classes + " " + _classesBtnArr[_cb]>>
<</if>>
<</for>>
<</if>>
/* If we have a link, and it's not an #id - it's a passage/popup link (we need to determine it here, because we'll need it for drawing disabled buttons on activitiesDone etc.) */
<<if _link && _link.indexOf("#") == -1>>
/* We need to check if we're linking to an earlyAccess or todo content, and if so - override the link - unless we're already on earlyAccess or todo passage, in which case we have to allow it or players will be stuck in a loop */
<<if $curPas != "earlyAccess" && $curPas != "todo">>
<<if tags(_link).contains("earlyAccess") && !$supporter && !$test>>
<<set _link = "earlyAccess">>
<<set _skipYields = 1>>
<<elseif tags(_link).contains("todo") && !$test>>
<<set _link = "todo">>
<<set _skipYields = 1>>
<</if>>
<</if>>
/* We need to check if we're linking to a popup */
<<if tags(_link).contains("popup")>>
<<set _popup = 1>>
<</if>>
/* Mark the passage link */
<<set _passage = _link>>
<</if>>
/* If the text is not given - set it to default "Next" */
<<if _text == "">>
<<set _text = "Next">>
<</if>>
/* We need to check if it's a dialog button */
<<if !_dialog && _classes != "" && _classes.indexOf("dialog") != -1 && _text != "">>
<<set _dialog = _text>>
<</if>>
/* If it's an activity, chore, relation or quest, and it's not store, quick, or we're not on a sex passage - we need to add time update to the stats */
<<if _classes != "" && _passage != "sex" && _classes.indexOf("store") == -1 && _classes.indexOf("quick") == -1 && (_classes.indexOf("activ") != -1 || _classes.indexOf("chore") != -1 || _classes.indexOf("relation") != -1 || _classes.indexOf("quest") != -1)>>
/* If time was not given, we need to add it to the stats */
<<if _stats != "" && _stats.indexOf("time") == -1>>
<<set _stats = _stats + "; time+">>
<<elseif _stats == "">>
<<set _stats = "time+">>
<</if>>
<</if>>
/* If we have stats - we need to split them and build yields info */
<<if _stats && !_skipYields>>
/* Check if we want to hide yields - we do it automatically for relation buttons */
<<if _classes != "" && _classes.indexOf("yieldsHide") != -1 || _classes != "" && _classes.indexOf("relation") != -1>>
<<set _yieldsHide = 1>>
<</if>>
/* If there's a "yieldShow" or "store" class - force show the yield info (both normally and on prereq = 2). I use it mostly to display required dom/love on lvlup or desire on characters screen and for store btn's. */
<<if !_yieldsHide && _classes != "" && (_classes.indexOf("yieldShow") != -1 || _classes.indexOf("store") != -1)>>
<<set _yieldShow = 1>>
<</if>>
/* If there's a "valueShow" class - it's a switch to force show the actual value of the yield (both normally and on prereq = 2). I use it mostly to display required dom/love on lvlup or desire on characters screen. */
<<if !_yieldsHide && _classes != "" && _classes.indexOf("valueShow") != -1>>
<<set _valueShow = 1>>
<</if>>
/* Split the stats */
<<set _objects = splitter(_stats)>>
<<for _by = 0; _by < _objects.length; _by++>>
/* We need to get the $char variable from the button to properly check $activitiesDone so basically we need to save it for later */
<<if _objects[_by].action == "update" && _objects[_by].type == "var" && _objects[_by].id == "char">>
<<set _tempChar = _objects[_by].value>>
<</if>>
<<if !_yieldsHide || (_objects[_by].id == "cash" && !_classes.indexOf("yieldsHideAll") == -1 )>>
<<set _char = State.getVar("$" + _objects[_by].char)>>
/* Because char.desire turns into char.dom/love we need to look for it and update it for valueInfo accordingly */
<<if _objects[_by].action == "update" && _objects[_by].char != "" && _objects[_by].id == "desire">>
/* We need to select character's multipliers */
<<if _char.loveMulti > _char.dominationMulti>>
<<set _desireStat = "love">>
<<elseif _char.loveMulti < _char.dominationMulti>>
<<set _desireStat = "domination">>
<<else>>
<<set _desireStat = ["love", "domination"].random()>>
<</if>>
<<set _objects[_by].id = _desireStat>>
<</if>>
/* We display the yields info in certain cases - when we force show through yieldShow/valueShow classes, when we're on a popup, when it's dom, love or cash yield, and for activ/chore/relation btn classes. At this point it would be probably easier to list when we don't show the yields... TODO */
<<if _yieldShow || _valueShow || _popup || _objects[_by].id == "domination" || _objects[_by].id == "love" || _objects[_by].id == "cash" || (_objects[_by].id == "time" && _objects[_by].sign == "+") || _classes != "" && ( _classes.indexOf("activ") != -1 || _classes.indexOf("chore") != -1 || _classes.indexOf("relation") != -1 )>>
/* Narrow down the value info to btns that are stat updates */
<<if _objects[_by].action == "update" && (_objects[_by].type == "stat") || (_objects[_by].type == "other" && _objects[_by].id == "time")>>
/* If it's a "+" - we use green stat, if "-" - red */
<<if _objects[_by].id == "time">>
<<set _statClass = "time">>
<<elseif _objects[_by].sign == "+" && _objects[_by].value < 0>>
<<set _statClass = "red">>
<<elseif _objects[_by].sign == "+">>
<<set _statClass = "green">>
<<elseif _objects[_by].sign == "-">>
<<set _statClass = "red">>
<<else>>
<<set _statClass = "default">>
<</if>>
/* Start the html */
<<set _valueInfoTemp = '<span class=\"stat ' + _statClass + '\">'>>
/* Add stat icon*/
<<set _valueInfoTemp = _valueInfoTemp + '<img src=\"' + setup.ImagePath + 'icons/' + _objects[_by].id + '.png\" class=\"statIcon\">'>>
/* If we update cash - we need to add value */
<<if _objects[_by].id == "cash">>
<<set _valueInfoTemp = _valueInfoTemp + '<span class=\"statValue\">' + _objects[_by].value + ' <span class="desc">$</span></span>'>>
/* If there's a valueShow we force display the value (eg. because we need people to know how much clicking the btn would cost on the lvlup passage) */
<<elseif _valueShow>>
<<set _valueInfoTemp = _valueInfoTemp + '<span class=\"statValue\">'>>
/* If dom or love - we need to use default xp multiplier and add "xp." */
<<if _objects[_by].id == "love" || _objects[_by].id == "domination">>
<<set _objects[_by].value = (_objects[_by].value * $defXpMulti) + ' <span class=\"desc\">xp.</span>'>>
<</if>>
<<set _valueInfoTemp = _valueInfoTemp + _objects[_by].value>>
<<set _valueInfoTemp = _valueInfoTemp + '</span>'>>
<</if>>
/* Close the html */
<<set _valueInfoTemp = _valueInfoTemp + "</span>">>
<<set _valueInfo = _valueInfo + _valueInfoTemp>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
/* Draw buttons */
<<capture _link, _text, _stats, _classes, _skipYields, _passage, _popup, _dialog, _tempChar, _yieldShow, _yieldsHide, _valueShow, _valueInfo, _errorInfo, $popupOn, $chunksOn, _curChunkId, _curBtnId, _curWrapClasses, _curQuest>>
/* If prereq is "3" and it's an exit button, or prereq is "2", or the button leads to an activity/chore/quick/relation that was already done, or we got a "disabled" class - print the button in a disabled mode */
<<if ($prereq == 3 && _classes != "" && _classes.indexOf("exit") != -1 && $test != 1) || ($prereq == 2 && _classes.indexOf("relation") == -1) || ($prereq == 1 && _classes != "" && (_classes.indexOf("activ") != -1 || _classes.indexOf("chore") != -1 || _classes.indexOf("quick") != -1 || _classes.indexOf("relation") != -1) && ($activitiesDone.indexOf(_passage) != -1 || $activitiesDone.indexOf(_passage + $curLoc) != -1 || $activitiesDone.indexOf(_passage + $curLoc + $curLocChars) != -1 || $activitiesDone.indexOf(_passage + _tempChar) != -1) ) || (_classes != "" && _classes.indexOf("disabled") != -1)>>
<<if $errorStat>>
/* Create the error html */
<<set _errorInfo = '<span class=\"statError\">'>>
/* If the error is status, we display desire */
<<if $errorStat == "status">>
<<set $errorStat = "desire">>
<</if>>
/* Add icon of a stat or info if the error is lvl */
<<if $errorStat == "lvl">>
<<set _errorInfo = _errorInfo + '<span class=\"statErrorInfo\">Level too low</span>'>>
<<else>>
<<set _errorInfo = _errorInfo + '<img src=\"' + setup.ImagePath + 'icons/' + $errorStat + '.png\" class=\"statIcon\">'>>
<</if>>
/* Add value if it's needed */
<<if $errorStatValue>>
/* If it's love or dom - add value and "xp." */
<<if $errorStat == "love" || $errorStat == "domination">>
<<set _errorInfo = _errorInfo + '<span class=\"statValue\">' + $errorStatValue + ' <span class=\"desc\">xp.</span></span>'>>class=\"desc\">xp.</span></span>'>>
/* If it's cash - add value and "$" */
<<elseif $errorStat == "cash">>
<<set _errorInfo = _errorInfo + '<span class=\"statValue\">' + $errorStatValue + ' <span class=\"desc\">$</span></span>'>>
<<else>>
<<set _errorInfo = _errorInfo + '<span class=\"statValue\">' + $errorStatValue + '</span>'>>
<</if>>
<</if>>
/* Close the error html */
<<set _errorInfo = _errorInfo + '</span>'>>
<</if>>
/* Print the btn */
<span @id="_curBtnId" @class="_curWrapClasses">
<div @class="'btn disabled ' + _classes"><span class="btnText">_text</span> _errorInfo</div>
</span>
/* Report the button to the chunks/popup array */
<<if $chunksOn && $popupOn>>
<<set $popupsArr.find(obj => {return obj.id === _curChunkId}).btns.push(_curBtnId)>>
<<elseif $chunksOn>>
<<set $chunksArr.find(obj => {return obj.id === _curChunkId}).btns.push(_curBtnId)>>
<</if>>
/* If prerequisites are met (or not but it's an exit button while test is on) - print a normal button */
<<elseif $prereq == 1 || ($prereq == 3 && _classes.indexOf("exit") != -1 && $test == 1)>>
<span @id="_curBtnId" @class="_curWrapClasses">
<<link "<div @class=\"'btn '+ _classes\"><span class=\"btnText\">_text</span> _valueInfo</div>">>
/* Load the latest chunks array */
<<set _chunksArr = $popupOn ? $popupsArr : $chunksArr>>
<<if $chunksOn>>
<<set _curChunkThread = _chunksArr.find(obj => {return obj.id === _curChunkId}).thread>>
<<set _curChunkNum = _chunksArr.find(obj => {return obj.id === _curChunkId}).num>>
<<set _newChunkPrefix = $popupOn ? "popup_" : "chunk_">>
<<else>>
<<set _curChunkThread = null>>
<<set _curChunkNum = null>>
<<set _newChunkPrefix = null>>
<</if>>
/* If test is on, report every click to the console for better bugtesting */
<<if $test>>
<<script>>console.log(" ");<</script>>
<<script>>console.log(" / / / / / / BTN CLICKED / / / / / / ");<</script>>
<</if>>
/* If there's a link given with #, it's a link to a new thread of chunks, we need to costruct it into a proper chunk id */
<<if _link.indexOf("#") != -1>>
<<set _newChunkId = _newChunkPrefix + _link.replace('#','') + "_" + 1>>
/* If there's no link, we link to the next chunk in the thread */
<<elseif _link == "">>
/* The index of the new chunk should be the index of the next item in the chunks array, if the thread matches */
<<set _newChunkIndex = _chunksArr.findIndex(obj => {return obj.id === _curChunkId}) + 1>>
<<if _chunksArr[_newChunkIndex] && _chunksArr[_newChunkIndex].thread == _curChunkThread>>
<<set _newChunkId = _chunksArr[_newChunkIndex].id>>
/* If there's no match, we try to redirect to a random event if we didn't do it already before, or revert to location or sex page */
<<else>>
<<set _newChunkEventIndex = _chunksArr.findIndex(obj => {return obj.id === "chunk_event_1"})>>
<<if _newChunkEventIndex >= 0 && !$eventStarted>>
<<set _newChunkId = "chunk_event_1">>
<<set $eventStarted = 1>>
<<elseif $curPas == "sex" || tags($curPas).contains("sex")>>
<<set _passage = "sex">>
<<else>>
<<set _passage = $curLoc>>
<</if>>
<</if>>
<</if>>
/* TEST */
<<if $test && $testReport != "hide">>
<<script>>console.log("BTN reporting:");<</script>>
<<script>>console.log("passage: " + State.temporary.passage);<</script>>
<<script>>console.log("curChunkId: " + State.temporary.curChunkId);<</script>>
<<script>>console.log("newChunkId: " + State.temporary.newChunkId);<</script>>
<</if>>
/* LINK IT! */
/* If it's a save menu - we need popup */
<<if _passage == "saves">>
<<script>>UI.saves()<</script>>
/* If it's a close link - we need to kill the popup */
<<elseif _passage == "close">>
<<script>>Dialog.close();<</script>>
<<script>>state.display(state.active.title, null, "back");<</script>>
/* If it's a link to a popup - pocket the stats and run a popup */
<<elseif _popup && _passage>>
<<pocket _stats>>
<<runPopup _passage>>
/* If it's a passage */
<<elseif _passage>>
/* Quest update - if we're on a quest passage or included quest event - we need to pocket quest update to the button that's leading outside of the quest (just in case the update should be at the end, so that in the case of quest progress cancellations, the cancellation would be first, though I'm not sure if it's actually important) */
<<if $curTags.contains("quest")>>
<<if _stats != "">>
<<set _stats = _stats + "; quest:" + _curQuest + "+">>
<<elseif _stats == "">>
<<set _stats = "quest:" + _curQuest + "+">>
<</if>>
<</if>>
/* Pocket the yields, otherwise we ignore the yields, as we don't want the player to gain from Early Access stuff */
<<if !_skipYields>>
<<pocket _stats>>
<</if>>
/* Finally go to the passage */
<<goto _passage>>
/* If we're in a popup, and we're NOT linking to a popup, we also need to close the popup */
<<if $popupOn>>
<<script>>Dialog.close();<</script>>
<</if>>
/* If we don't link to a popup or a passage, we're linking to an id */
<<else>>
/* If it's a todo page - pocket the stats and delete them */
<<if tags($curPas).contains("todo")>>
<<pocket _stats>>
<<set _stats = null>>
<</if>>
/* Finally we need the chunkChange script to hide btns, pause vids in the current chunk, and play vids in new chunk, and also decode all the delayers */
<<script>>chunkChange(State.temporary.curChunkId, State.temporary.newChunkId, State.temporary.stats, State.temporary.dialog);<</script>>
<</if>>
<</link>>
</span>
/* Report the button to the chunks/popup array */
<<if $chunksOn && $popupOn>>
<<set $popupsArr.find(obj => {return obj.id === _curChunkId}).btns.push(_curBtnId)>>
<<elseif $chunksOn>>
<<set $chunksArr.find(obj => {return obj.id === _curChunkId}).btns.push(_curBtnId)>>
<</if>>
<</if>>
<</capture>>
<</if>>
/* Set the prerequsites variable back to default after use */
<<set $prereq = null>>
<</if>>
<</widget>>/* introLA */
<<chunks>>
<h2>City Center</h2>
<<media "locations/areaCity/_big.jpg" "wide">>
<big>The plane touches the airfield like a virgin's thigh.</big>
<p>You take your luggage, walk out of the airport, and look around.</p>
<<media "events/intro/girls.mp4">>
<p>Here it is. The Promised Land. You feel like a lion looking at a herd of gazelles. Young, hot, horny gazelles.</p>
<<dial "player" "Jackpot, baby!">>
<p>But you do not allow yourself to lose focus.</p>
<big>Your dad arranged a room for you in LA.</big>
<p>He didn't say much, so you aren't sure what to expect. But you're about to find out.</p>
<<btn>>
<<chunk>>
<big>You call a taxi and ride to your new home.</big>
<<media "events/intro/taxi.mp4">>
<p>The cab goes past beautiful mansions and villas, surrounded by palm trees. Gradually, as you make your way through the city, the area becomes less luxurious (and more liquor-store-ish).</p>
<big>After a while you arrive at your final destination...</big>
<<btn>>
<<chunk>>
<h2 class="border">Neighbourhood</h2>
<<media "locations/areaNeighbourhood/_big.jpg" "wide">>
<big>It's a dump.</big>
<<dial "player" "//Thank you, dad...//">>
<p>Bottles, crackheads, baby on the corner. You cautiously approach the house at the address your dad gave you. It hasn't been painted in years, and the grass is yellow and patchy.</p>
<big>You approach the doors and knock...</big>
<<btn>>
<<chunk>>
<<media "events/intro/daphne.mp4">>
<script>checkInputs();</script>
<big>
<span>You met </span>
<span><<textbox "$daphne.name" $daphne.name>></span>
<span>, your </span>
<span>
<<listbox "$daphne.relation">>
<<option "landlady" "landlady" selected>>
<<option "aunt" "aunt">>
<</listbox>>
</span>
</big>
<p class="clear noMarginTop">The sight of those knockers renders you speechless.</p>
<<dial "daphne" "Yes...?">>
<<dial "player" "//Thank you, dad!//">>
<<menu>>
/* Help */
<div class="expand help">
<p>Need some help?</p>
<div class="expandContent">
<p>When you're interacting with a character, choosing an option with <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> not only gives you //Experience//, but also yields ''//Desire//'' for the character.</p>
<p>Basically - the more //Desire// a character has, the higher your ''//Friendship level//'' becomes. And the higher it is, the bigger chance for a positive reaction to your advances.</p>
<p>''TL;DR: boost //desire// to get into character's panties.''</p>
</div>
</div>
<<btn null "I'm here for the boob! Ermmm... Room!" "daphne.love" "dialog yieldShow">>
<<btn null "I cum for a room." "daphne.dom" "dialog yieldShow">>
<<chunk>>
<<delayer>>
<<if $daphne.relation == "landlady">>
<<dial "daphne" "Oh? Oh! The room! I thought you were coming tomorrow. Come with me, hun.">>
<<else>>
<<dial "daphne" "Oh? Oh! You must be $player.name! $dad.name, I mean your dad, told me so much about you! I though you'd come tomorrow. Come with me, hun.">>
<</if>>
<</delayer>>
<<media "events/intro/daphne_walkin.mp4">>
<<btn>>
<<chunk>>
<h2 class="border">$daphne.name's house</h2>
<<media "locations/daphHouse/_big.jpg" "wide">>
<p>You follow her to the house. Most of the interior looks like straight out of an 80s porn - clean on the surface, but you have a feeling everything is sticky.</p>
<<dial "player" "//I guess she likes it dirty...//">>
<<dial "daphne" "Why are you smiling, hun?">>
<<dial "player" "Oh, emm... The house looks neato!">>
<<dial "daphne" "That's a nice thing to say. I'm sure we'll get along nicely.">>
<<dial "player" "//Oh yes, we will...//">>
<p>You're barely able to stop staring at her ass.</p>
<big>She buttnotized you.</big>
<<media "events/intro/daphne_butt.mp4">>
<<delayer>>
<<if $daphne.relation == "aunt">>
<<dial "player" "Uhmm... so my dad told you about me?">>
<<dial "daphne" "He's very proud of you, $player.name! I know it's strange that we never met before, but I've been so busy here in LA...">>
<<dial "player" "Better late than later!">>
<p>$daphne.name giggles.</p>
<<dial "daphne" "Haha, that's what I always say!">>
<</if>>
<</delayer>>
<<btn>>
<<chunk>>
<h2 class="border">Your room</h2>
<<media "locations/daphGuest/_big.jpg" "wide">>
<p>$daphne.name stops in front of a room in the attic. It looks like shit, but with the little amount of blood left in your brain - you don't care.</p>
<<dial "daphne" "You will sleep here. It's my son's old room. He's very successful now and lives downtown!">>
<<dial "player" "U-huh.">>
<<dial "daphne" "I'll leave you to unpack. Have fun in LA, hun!">>
<<delayer>>
<<if $daphne.relation == "aunt">>
<<dial "player" "Thank you... uhmmm... auntie!">>
<<else>>
<<dial "player" "Thank you, miss!">>
<</if>>
<</delayer>>
<big>She winks at you and walks away.</big>
<<btn>>
<<chunk>>
<p>But you're not even sad seeing her go.</p>
<p>You were waiting years for an opportunity like this, and you want to be smart about it. You can feel that finally things are going your way. It's your time to shine, and I promise - I'll make you shine, bro!</p>
<big>I'll be the wingman of your dreams.</big>
<<media "success.mp4">>
<<btn "daphGuest" "Start your new life" "quest:daphIntro+; time+">> /*[[daphGuest]]*/
<</chunks>><<events>>
<<EVENT "halloween>0; halloween!=DONE;">>
<<include "halloween">>
/* ===================================================================================================================================================================================================================== */
<<EVENT "alexaIntro=0; day=2; period!=Morning">>
<<include "alexaIntro">>
/* ===================================================================================================================================================================================================================== */
<<EVENT "xxxmas=4">>
<<include "xxxmas">>
/* ===================================================================================================================================================================================================================== */
<<EVENT "xxxmas=5">>
<<include "xxxmas">>
/* ===================================================================================================================================================================================================================== */
<<EVENT "xxxmas=6">>
<<include "xxxmas">>
<</events>>/* quests */
/* Parse the yields on load */
<<if !$curTags.contains("quest") && !$curTags.contains("events")>>
<<yields null "popup">>
<</if>>
/* Reset the multipliers */
<<resetMulti>>
/* Help */
/* TODO: help div */
/* List of player's active quests */
<h1 class="center marginBottom20px">Your active quests</h1>
<hr>
/* Reset the quests displayed info */
<<set _questDisplayed = null>>
/* Sort quests by priority */
<<set _playerQuests = clone($player.quests)>>
<<set _playerQuests = _playerQuests.sort((a,b) => (b.priority - a.priority))>>
/* Split setup.quests array into separate quests */
<<set _questExpanded = null>>
<<for _q = 0; _q < _playerQuests.length; _q++>>
<<set _curQuest = setup.quests.find(obj => {return obj.id === _playerQuests[_q].id})>>
<<set _curQuestPlayer = _playerQuests[_q]>>
/* Check if the quest is work in progress */
<<if _curQuest.wip != 1>>
<<if _playerQuests[_q].done != 1 && _playerQuests[_q].active != 0 && _playerQuests[_q].active <= _curQuest.tasks.length>>
/* Open the quest that was last updated */
<<if !_questExpanded>>
<<set _questClass = "expand expandOpen">>
<<set _questExpanded = 1>>
<<else>>
<<set _questClass = "expand">>
<</if>>
/* Check if quest is Early Access */
<<set _curQuestEA = null>>
<<if tags(_curQuest.id).contains("earlyAccess") && $supporter != 1>>
<<set _curQuestEA = 1>>
<</if>>
<div @class="_questClass">
<<set _questDisplayed = 1>>
/* Draw quest's name */
<h2>
<<if _curQuest.char>>
<img @src="setup.ImagePath + 'characters/' + _curQuest.char + '/avatar.jpg'">
<</if>>
<<print _curQuest.name>>
<<if _curQuestEA>><div class="badge earlyAccess">Quest for supporters!</div><</if>>
</h2>
/* Set the quests displayed info */
<div class="expandContent">
/* Split each quest into separate tasks */
<<for _t = 0; _t < _curQuestPlayer.active; _t++>>
<<if _curQuestPlayer.active == 0>>
<<set _class = "dimmed">>
<<elseif _t == (_curQuestPlayer.active - 1)>>
<<set _class = "bold">>
<<elseif _t < (_curQuestPlayer.active - 1)>>
<<set _class = "dimmed">>
<<else>>
<<set _class = "dimmed">>
<</if>>
<<set _class = "width75 center " + _class>>
/* Draw quest's tasks */
<p @class="_class"><<print _t + 1>>. <<print _curQuest.tasks[_t]>></p>
<</for>>
<br class="clear">
</div>
</div>
<</if>>
<</if>>
<</for>>
/* List of player's active work in progress quests */
/* Split setup.quests array into separate quests */
<<for _q = 0; _q < $player.quests.length; _q++>>
<<set _curQuest = setup.quests.find(obj => {return obj.id === $player.quests[_q].id})>>
<<set _curQuestPlayer = $player.quests[_q]>>
/* Check if the quest is work in progress */
<<if _curQuest && _curQuest.wip == 1>>
<<if _curQuestPlayer.done != 1 && _curQuestPlayer.active != 0 && _curQuestPlayer.active <= _curQuest.tasks.length>>
<div class="expand">
<<set _questDisplayed = 1>>
/* Draw quest's name */
<h2><<print _curQuest.name>><div class="badge wip">Work in progress!</div></h2>
<div class="expandContent">
<div class="width75 centered">
<<if !$supporter>>
<p>I'm still working on this quest, it'll be in the game sooner or later, however there's a lot of other priorities. You can help me by letting me know on Discord that you want this quest to be finished quicker and supporting the project!</p>
<<btnPopup "support" "Support the author" "med width75 centered">>
<<else>>
<p>I'm still working on this quest, it'll be in the game sooner or later, however there's a lot of other priorities. You can help me by letting me know on Discord that you want this quest to be finished quicker!</p>
<</if>>
</div>
<br class="clear">
</div>
</div>
<</if>>
<</if>>
<</for>>
<<if !_questDisplayed>><div class="center"><strong>There's no active quests</strong></div><</if>>
<br class="clear">
<br class="clear">
/* Quests to be discovered */
<h1 class="center marginBottom20px">Quests to be discovered</h1>
<hr>
/* Reset the quests displayed info */
<<set _questDisplayed = null>>
/* Set the limit for quests displayed */
<<set _questLimit = 4>>
/* Create temp array for quests and shake it */
<<set _questsArr = clone(setup.quests)>>
<<set _questsArr = _questsArr.shuffle()>>
/* Split quests array into separate quests */
<<for _q = 0; _q < _questsArr.length; _q++>>
/* Go forward if we're below the quest limit */
<<if _questLimit > 0>>
<<set _curQuest = _questsArr[_q]>>
<<set _curQuestPlayer = $player.quests.find(obj => {return obj.id === _curQuest.id})>>
<<if _curQuest.wip != 1 && _curQuest.id != "xxxmas" && _curQuest.id != "halloween" && _curQuest.id != "testQuest" && (_curQuestPlayer && _curQuestPlayer.done != 1 && _curQuestPlayer.active == 0 || !_curQuestPlayer)>>
/* Check if quest is Early Access */
<<set _curQuestEA = null>>
<<if tags(_curQuest.id).contains("earlyAccess") && $supporter != 1>>
<<set _curQuestEA = 1>>
<</if>>
/* Set quest's transparency */
<<set _curQuestCss = "opacity: " + _questLimit + "0%">>
/* Draw quest's name */
<h2 @style=_curQuestCss>
<<if _curQuest.char>>
<img @src="setup.ImagePath + 'characters/' + _curQuest.char + '/avatar.jpg'">
<</if>>
<<print _curQuest.name>>
<<if _curQuestEA>><div class="badge earlyAccess">Early Access</div><</if>>
</h2>
/* Update the questLimit */
<<set _questLimit = _questLimit - 1>>
/* Set the quests displayed info */
<<set _questDisplayed = 1>>
<</if>>
<</if>>
<</for>>
<<if !_questDisplayed>><p class="desc center">You discovered all the quests for now</p><</if>>
<br class="clear">
<br class="clear">
/* List of finished quests */
<h1 class="center marginBottom20px">Finished quests</h1>
<hr>
/* Reset the quests displayed info */
<<set _questDisplayed = null>>
/* Split $player.quests array into separate quests */
<<for _q = 0; _q < $player.quests.length; _q++>>
/* Go forward only if the player finished it */
<<if $player.quests[_q].done == 1>>
/* Load the quest vars */
<<set _curQuest = setup.quests[setup.quests.findIndex(x => x.id === $player.quests[_q].id)]>>
<div class="expand">
/* Set the quests displayed info */
<<set _questDisplayed = 1>>
/* Draw quest's name */
<h2>
<<if _curQuest.char>>
<img @src="setup.ImagePath + 'characters/' + _curQuest.char + '/avatar.jpg'">
<</if>>
<<print _curQuest.name>>
<<if $test>>
<<capture _curQuest>>
<<link "[reset]">>
<<pocket `_curQuest.id + "+RESET"`>>
<<replace "#ui-popup">><<include "quests">><</replace>>
<</link>>
<</capture>>
<</if>>
</h2>
/* Draw quest's tasks */
<div class="expandContent">
/* Split each quest into separate tasks */
<<for _t = 0; _t < _curQuest.tasks.length; _t++>>
<<if _curQuest.active == 0>>
<<set _class = "dimmed">>
<<elseif _t == (_curQuest.active - 1)>>
<<set _class = "">>
<<elseif _t < (_curQuest.active - 1)>>
<<set _class = "green">>
<<else>>
<<set _class = "dimmed">>
<</if>>
<<set _class = "width75 center " + _class>>
/* Draw quest's tasks */
<p @class="_class"><<print _t + 1>>. <<print _curQuest.tasks[_t]>></p>
<</for>>
<br class="clear">
</div>
</div>
<</if>>
<</for>>
<<if !_questDisplayed>><p class="desc center">There's no finished quests</p><</if>>
<br class="clear">
/* For testing we show all available quests (all the ones that met requirements of other quests, otherwise it doesn't work anyway) */
<<if $test>>
<h1 class="center marginBottom20px">QUESTS ADMIN</h1>
<hr>
/* Split setup.quests array into separate quests */
<<for _q = 0; _q < setup.quests.length; _q++>>
/* Check if the player knows the quest, and go forward only if he doesn't know it, or know but didn't finished */
<<set _curQuest = setup.quests[_q]>>
<<set _curQuestIndex = $player.quests.findIndex(x => x.id === setup.quests[_q].id)>>
<<set _curQuestVar = $player.quests[_curQuestIndex]>>
<<if _curQuestIndex == -1 || _curQuestVar.done != 1>>
/* Draw html */
<div class="expand">
/* Draw quest's name */
<h2>
<<if _curQuest.char>>
<img @src="setup.ImagePath + 'characters/' + _curQuest.char + '/avatar.jpg'">
<</if>>
<<print _curQuest.name>>
<<capture _curQuest>>
<<link "[+]">>
<<pocket _curQuest.id>>
<<replace "#ui-popup">><<include "quests">><</replace>>
<</link>>
<<link "[done]">>
<<pocket `_curQuest.id + "+DONE"`>>
<<replace "#ui-popup">><<include "quests">><</replace>>
<</link>>
<</capture>>
</h2>
<div class="expandContent">
/* Split each quest into separate tasks */
<<for _t = 0; _t < _curQuest.tasks.length; _t++>>
<<if _curQuestVar == null>>
<<set _class = "dimmed">>
<<elseif _t == (_curQuestVar.active - 1)>>
<<set _class = "">>
<<elseif _t < (_curQuestVar.active - 1)>>
<<set _class = "green">>
<<else>>
<<set _class = "dimmed">>
<</if>>
<<set _class = "width75 center " + _class>>
/* Draw quest's tasks */
<p @class="_class"><<print _t + 1>>. <<print _curQuest.tasks[_t]>></p>
<</for>>
<br class="clear">
</div>
</div>
<</if>>
<</for>>
<br class="clear">
<</if>>
/* Discord */
<br class="clear">
<br class="clear">
<h1 class="center marginBottom20px">Walkthroughs</h1>
<hr>
<div class="twoCol">
<img src="media/ui/discord.png" class="floatLeft sml bigMarginTop">
<div class="twoColText floatLeft">
<p>If you want to be sure you got all the quests - check the walkthroughs on my Discord for some additional information.</p>
<a href="https://discord.gg/VRpWhd6" target="_blank" class="btn med">Check my Discord</a>
</div>
<br class="clear">
</div>/* yields */
/* Update stats, quests, effects, etc. and draw notifications. If the argument is given - process only this argument. If not - process pocket. */
<<widget "yields">>
/* TEST: */
<<if $test && $testReport != "hide">>
<<script>>console.log(" ■ ■ ■ ■ YIELDS START ■ ■ ■ ■ ");<</script>>
<<script>>console.log("data: " + State.variables.args[0]);<</script>>
<<script>>console.log("pocket:");<</script>>
<<script>>console.log(State.variables.pocket);<</script>>
<</if>>
/* Stats given to the widget */
<<set _inputYds = $args[0] ? $args[0] : null>>
/* Switch is used to select which yields to parse in specific places like popups, header, etc. */
<<set _switchYds = $args[1] ? $args[1] : null>>
/* Classes are passed to notify widget */
<<set _classes = $args[2] ? $args[2] : "">>
/* If there is data given through argument - process it through $pocket */
<<if _inputYds>>
/* If there's a switch, and it's not "header" or "popup" - process it through pocketInstant to narrow the results to the input, otherwise do normal pocket */
<<if _switchYds != "header" && _switchYds != "popup">>
<<pocket _inputYds "instant">>
<<set _instant = 1>>
<<else>>
<<pocket _inputYds>>
<</if>>
<<else>>
<<set _instant = null>>
<</if>>
/* Load the data that we got back from pocket widget */
<<if _instant>>
<<set _objYds = $pocketInstant>>
<<set $yieldsForce = 1>>
<<else>>
<<set _objYds = $pocket>>
<</if>>
/* TEST: */
<<if $test && $testReport != "hide" && _objYds>>
<<script>>console.log("yields switch:");<</script>>
<<script>>console.log(State.temporary.switchYds);<</script>>
<<script>>console.log("yields data after pocket:");<</script>>
<<script>>console.log(State.temporary.objYds);<</script>>
<</if>>
/* Split pocket into separate yields */
<<for _y = 0; _y < _objYds.length; _y++>>
<<set _notifInfo = null>> /* Additional parameter for notification */
<<set _periodNew = null>>
<<set _process = null>>
<<set _skip = null>>
<<set _splice = null>>
<<set _lvlNum = 0>>
<<set _q = null>>
<<if _objYds[_y].action == "update">>
/* Decide when to show the yields */
/* If the yields are off - always skip it */
<<if $yieldsOff>>
<<set _process = null>>
/* If it's a $questMode - we ignore time updates */
<<elseif $questMode != null && _objYds[_y].id == "time">>
<<set _process = null>>
/* If we force it - we always want to run it */
<<elseif $yieldsForce>>
<<set _process = 1>>
/* If switchYds is empty, we process everything except quests and sex yields */
<<elseif _switchYds == null && _objYds[_y].id != "cum" && _objYds[_y].id != "squirt" && _objYds[_y].id != "vigour" && _objYds[_y].id != "cumMax" && _objYds[_y].type != "quest">>
<<set _process = 1>>
/* In popup we process everything except quest and sex yields */
<<elseif _switchYds == "popup" && _objYds[_y].id != "cum" && _objYds[_y].id != "squirt" && _objYds[_y].id != "vigour" && _objYds[_y].id != "cumMax" && _objYds[_y].type != "quest">>
<<set _process = 1>>
/* In popup we process quest if we're on quests popup */
<<elseif _switchYds == "popup" && _objYds[_y].type == "quest" && $popupPsg == "quests">>
<<set _process = 1>>
/* In header we process everything except sex yields */
<<elseif _switchYds == "header" && _objYds[_y].id != "cum" && _objYds[_y].id != "squirt" && _objYds[_y].id != "vigour" && _objYds[_y].id != "cumMax">>
<<set _process = 1>>
/* In sex we only process sex yields */
<<elseif _switchYds == "sex" && (_objYds[_y].id == "cum" || _objYds[_y].id == "squirt" || _objYds[_y].id == "vigour")>>
<<set _process = 1>>
/* If $sex is on, but switchYds are empty, and the yields are cumMax or vigour, it came from new effect and we need to update it on the fly */
<<elseif $sex && _objYds[_y].type == "sexBoost" && (_objYds[_y].id == "cumMax" || _objYds[_y].id == "vigour")>>
<<set _process = 1>>
<</if>>
/* Process the yields */
<<if _process>>
/* Update the stats */
<<if _objYds[_y].type == "stat">>
/* Round the value just in case */
<<if Util.isNumeric(_objYds[_y].value)>>
<<set _objYds[_y].value = Math.round(_objYds[_y].value)>>
/* If sign is "-", we need to add "-" to the value */
<<if _objYds[_y].sign == "-" && _objYds[_y].value > 0>>
<<set _objYds[_y].value = parseInt(_objYds[_y].sign + _objYds[_y].value)>>
<</if>>
<</if>>
/* Build a var for the update */
<<set _stat = '$'+_objYds[_y].char+'.'+_objYds[_y].id>>
/* Count the new value for the stat */
<<set _valueNew = Math.round(State.getVar(_stat)) + _objYds[_y].value>>
/* Adjust if the new value is too small */
<<set _valueNew = _valueNew < 0 ? 0 : _valueNew>>
/* Update the stat */
<<set State.setVar(_stat, _valueNew)>>
/* If we update the desire, we also need to update the status of the character */
<<if _objYds[_y].char != "" && _objYds[_y].char != "player" && _objYds[_y].id == "desire">>
<<set _varStatus = '$'+_objYds[_y].char+'.status'>>
<<set _varStatusOld = State.getVar(_varStatus)>>
<<set _varDesire = State.getVar('$'+_objYds[_y].char+'.desire')>>
<<set _varMinDesire = State.getVar('$'+_objYds[_y].char+'.minDes')>>
/* Status depends on the multiplication of minimum desire (minDes) required to have sex with character. Status 1 = we know the character; 2 = familiar; 3 = friends (can have sex); 4 = lovers; 5 = bff */
<<if _varDesire > 0 && _varDesire < _varMinDesire/2>>
<<set _varStatusNew = 1>>
<<elseif _varDesire >= _varMinDesire/2 && _varDesire < _varMinDesire>>
<<set _varStatusNew = 2>>
<<elseif _varDesire >= _varMinDesire && _varDesire < _varMinDesire*2>>
<<set _varStatusNew = 3>>
<<elseif _varDesire >= _varMinDesire*2 && _varDesire < _varMinDesire*3>>
<<set _varStatusNew = 4>>
<<elseif _varDesire >= _varMinDesire*3>>
<<set _varStatusNew = 5>>
<<else>>
<<set _varStatusNew = 0>>
<</if>>
/* If the new status is different then the old one - make a change and display */
<<if _varStatusNew > 0 && _varStatusNew != _varStatusOld>>
/* Set the new status */
<<set State.setVar(_varStatus, _varStatusNew)>>
/* Check if the notification array exists, because backwards compatibility has problems with creating empty arrays */
<<if !$notifications>>
<<set $notifications = []>>
<</if>>
/* Load notification */
<<if _varStatusNew > _varStatusOld>>
<<set $notifications.push({type: "status", id: null, value: _varStatusNew, sign: "+", char: _objYds[_y].char, info: null}) >>
/* If the player advanced friendship status, he also needs to learn something about the character */
<<set _tempChar = clone(_objYds[_y].char)>>
<<pocket `_tempChar + ".info+"`>>
<<else>>
<<set $notifications.push({type: "status", id: null, value: _varStatusNew, sign: "-", char: _objYds[_y].char, info: null}) >>
<</if>>
<</if>>
/* Each time we update the desire, we also need to note we know the character */
/* !IMPORTANT! For 2.0.16 I've moved this line outside of the if, which basically means that everytime the desire is being updated (whether it actually gets updated or not) will trigger the met variable. It had to be like that, otherwise Cult Leader couldn't meet mia, because she was not getting the desire from love, and that was the trigger for met in the quest */
<<set State.setVar('$'+_objYds[_y].char+'.met', 1)>>
<</if>>
/* Update the effects */
<<elseif _objYds[_y].type == "effect">>
/* EXCEPTIONS - if it matches, do something */
/* EXC#1 - If the sign is + and effect is smashedBalls, and the player has groin_guard or diamond_balls - undo the effect and use up the groin_guard */
<<if _objYds[_y].sign == "+" && _objYds[_y].id == "ballsSmash" && (($player.effectsList != null && $player.effectsList.indexOf("diamond_balls") != -1) || $player.clothingAccessory == "groin_guard")>>
/* Remove groind_guard (guard protects balls) */
<<if $player.clothingAccessory == "groin_guard">>
<<pocket "groin_guard-">>
<</if>>
/* Remove ballsSmash */
<<pocket "ballsSmash-">>
/* Load notification */
<<set $notifications.push({type: "groin_guard", sign: "+"}) >>
/* Skip this effect (otherwise it adds ballsSmash again) */
<<set _skip = 1>>
<</if>>
/* EXC#2 - If the sign is + and effect is jerkedoff, reset the variable for #nofap effect */
<<if _objYds[_y].sign == "+" && _objYds[_y].id == "jerkedoff">>
<<set $playerNoFap = 0>>
<<pocket "effect:nofap-">>
<</if>>
/* Go forward if not skip */
<<if _skip != 1>>
/* Split setup.effects array into separate effects */
<<for _e = 0; _e < setup.effects.length; _e++>>
/* Search for this effect by comparing with effect id */
<<if _objYds[_y].id == setup.effects[_e].id>>
/* If the effects has class - add/remove its class to/from player classes array */
<<for _sec = 0; _sec < setup.effectsClasses.length; _sec++>>
<<if setup.effectsClasses[_sec].id == _objYds[_y].id>>
<<if _objYds[_y].sign == "+">>
/* 0.3.36 Check if the class is already added first, to avoid adding multiple identical classes, which then get stuck */
<<set _effectClassFound = null>>
<<for _pc = 0; _pc < $player.classes.length; _pc++>>
<<if $player.classes[_pc] == setup.effectsClasses[_sec].class>>
<<set _effectClassFound = 1>>
<</if>>
<</for>>
/* Add the class and the overlay effect */
<<if !_effectClassFound>>
<<set $player.classes.push(setup.effectsClasses[_sec].class)>>
/* Only add the overlay effect if the overlay effects are turned on in the settings */
<<if $overlayEffects>>
<<addclass "#passages" setup.effectsClasses[_sec].class>>
<</if>>
<</if>>
<<elseif _objYds[_y].sign == "-">>
<<for _pc = 0; _pc < $player.classes.length; _pc++>>
<<if $player.classes[_pc] == setup.effectsClasses[_sec].class>>
<<removeclass "#passages" $player.classes[_pc]>>
<<set $player.classes.splice(_pc, 1)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<break>>
<</if>>
<</for>>
/* If sign is "-", we need to add "-" to the value */
<<if _objYds[_y].sign == "-" && _objYds[_y].value > 0>>
<<set _objYds[_y].value = _objYds[_y].sign + _objYds[_y].value>>
<</if>>
<<set _objYds[_y].value = parseInt(_objYds[_y].value)>>
/* Check if the player already has the effect */
<<set _currentE = $player.effects.findIndex(x => x.id === setup.effects[_e].id)>>
/* If not then add it */
<<if _currentE == -1 && _objYds[_y].sign == "+">>
<<set $player.effects.push({id: setup.effects[_e].id, left: setup.effects[_e].duration})>>
/* We need to recount the multipliers */
<<set $resetMulti = 1>>
/* If we're during sex, and the effect impacts cumMax or vigour - we should update the related variables right away, otherwise ignore it
/* IN 0.3.63 we removed it, because with clothing player could take on and off and on again clothing items to
<<if $sex && (setup.effects[_e].multi.indexOf("cumMax") != -1 || setup.effects[_e].multi.indexOf("vigour") != -1)>>
<<set _sexVars = splitter(setup.effects[_e].multi)>>
<<for _sv = 0; _sv < _sexVars.length; _sv++>>
/* If sign is "-", we need to add "-" to the value /
<<if _sexVars[_sv].sign == "-" && _sexVars[_sv].value > 0>>
<<set _sexVars[_sv].value = parseInt(_sexVars[_sv].sign + _sexVars[_sv].value)>>
<</if>>
/* Set values /
<<set _curSexVarVal = State.getVar("$player." + _sexVars[_sv].id)>>
<<set _newSexVarVal = parseInt(_curSexVarVal) + parseInt(_sexVars[_sv].value)>>
<<set State.setVar("$player." + _sexVars[_sv].id, _newSexVarVal)>>
<</for>>
<</if>> */
/* We need to pocket the effect yields - used to remove effects and also process passage:xxx for trip */
<<if setup.effects[_e].yields>>
<<pocket setup.effects[_e].yields>>
<</if>>
/* If he doesn't have it, and it's "-" - remove it from pocket */
<<elseif _currentE == -1 && _objYds[_y].sign != "+">>
<<set _skip = 1>>
<<set _splice = 1>>
/* If the player has the effect, and it's "+" - adjust the duration, unless it's ongoing effect */
<<elseif _currentE != -1 && _objYds[_y].sign == "+">>
<<set _currentEVar = $player.effects[_currentE]>>
<<if _currentEVar.left != "ongoing" && setup.effects[_e].duration != "ongoing">>
<<set _valueNew = _currentEVar.left + setup.effects[_e].duration>>
<<set _currentEVar.left = _valueNew>>
<</if>>
/* If the player has the effect and it's "-" - remove the effect */
/* IMPORTANT - before version 0.2.20 it was just adjusting the effect duration, but it turns out I prefer to remove the effect completely on "-", so I've changed it */
<<elseif _currentE != -1 && _objYds[_y].sign != "+">>
<<set _skip = 1>>
<<set _splice = 1>>
<<set $player.effects.splice(_currentE, 1)>>
/* We need to recount the multipliers */
<<set $resetMulti = 1>>
<</if>>
/* Load vars for notification */
<<set _objYds[_y].value = setup.effects[_e].name>>
<<break>>
<</if>>
<</for>>
<</if>>
/* At the end we also need to rebuild the string for easy checks */
<<set $player.effectsList = null>>
<<for _pe = 0; _pe < $player.effects.length; _pe++>>
<<if $player.effectsList == null>>
<<set $player.effectsList = $player.effects[_pe].id>>
<<else>>
<<set $player.effectsList = $player.effectsList + "; " + $player.effects[_pe].id>>
<</if>>
<</for>>
/* And reset the random var, because some effects change it */
<<resetRandom>>
/* Update the items */
<<elseif _objYds[_y].type == "item">>
/* Split setup.items array into separate items */
<<for _it = 0; _it < setup.items.length; _it++>>
/* Compare with the given item id */
<<if _objYds[_y].id == setup.items[_it].id>>
/* Reset needed vars */
<<set _itemHas = null>>
<<set _itemClothing = null>>
<<set _itemOutfit = null>>
<<set _itemHead = null>>
<<set _itemAccessory = null>>
<<set _itemWorn = null>>
<<set _itemWear = null>>
<<set _itemOff = null>>
/* Check if the player already has an item */
<<set _curItemIndex = $player.items.findIndex(x => x.id === setup.items[_it].id)>>
<<if _curItemIndex != -1>>
<<set _itemHas = 1>>
<</if>>
/* Check if it's clothing and what type of clothing it is */
<<if setup.items[_it].outfit>>
<<set _itemClothing = 1>>
<<set _itemOutfit = 1>>
<<elseif setup.items[_it].head>>
<<set _itemClothing = 1>>
<<set _itemHead = 1>>
<<elseif setup.items[_it].accessory>>
<<set _itemClothing = 1>>
<<set _itemAccessory = 1>>
<</if>>
/* If it's clothing and player has the item - see if it's worn, and should be taken off or not, otherwise just parse the value */
<<if _itemClothing>>
/* Check if the item is worn */
<<if $player.clothingOutfit == setup.items[_it].id || $player.clothingHead == setup.items[_it].id || $player.clothingAccessory == setup.items[_it].id>>
<<set _itemWorn = 1>>
<</if>>
/* If it's a call to undress ("takeoff") something that is currently worn - it can be taken off */
<<if _objYds[_y].value == "takeoff">>
<<if _itemHas && _itemWorn>>
<<set _itemOff = 1>>
<</if>>
<<set _objYds[_y].value = 0>>
<<set _skip = 1>>
<<set _splice = 1>>
/* If it's a call to wear something - wear it */
<<elseif _objYds[_y].value == "wear">>
<<if _itemHas>>
<<set _itemWear = 1>>
<</if>>
<<set _objYds[_y].value = 0>>
<<set _skip = 1>>
<<set _splice = 1>>
<<else>>
<<set _objYds[_y].value = parseInt(_objYds[_y].value)>>
<</if>>
/* If it's not clothing but other item and it's a call to use it */
<<elseif _objYds[_y].value == "use">>
/* Use it unless player doesn't have it */
<<if _itemHas>>
<<set _itemUse = 1>>
<<set _objYds[_y].sign = "-">>
<<set _objYds[_y].value = 1>>
<<else>>
<<set _skip = 1>>
<<set _splice = 1>>
<</if>>
<<else>>
<<set _objYds[_y].value = parseInt(_objYds[_y].value)>>
<</if>>
/* If sign is "-", we need to add "-" to the value */
<<if _objYds[_y].sign == "-" && _objYds[_y].value > 0>>
<<set _objYds[_y].value = _objYds[_y].sign + _objYds[_y].value>>
<</if>>
/* Go further only unless we already know it's just a takeoff/wear call */
<<if !_skip>>
/* If player DOESN'T HAVE the item, and it's "+" - add it to the player's items array */
<<if _curItemIndex == -1 && _objYds[_y].sign == "+">>
<<set $player.items.push({id: setup.items[_it].id, quantity: _objYds[_y].value})>>
/* We need to recount the multipliers */
<<set $resetMulti = 1>>
/* If player DOESN'T HAVE the item, and it's "-" - remove it from pocket */
<<elseif _curItemIndex == -1 && _objYds[_y].sign == "-">>
<<set _skip = 1>>
<<set _splice = 1>>
/* If player HAS the item - adjust the quantity */
<<else>>
<<set _curItemVar = $player.items[_curItemIndex]>>
<<set _valueNew = _curItemVar.quantity + _objYds[_y].value>>
/* If there's some items left - adjust the quantity, otherwise remove it from array */
<<if _valueNew > 0>>
<<set _curItemVar.quantity = _valueNew>>
<<else>>
<<set $player.items.splice(_curItemIndex, 1)>>
<<set _objYds[_y].sign = "-">>
/* We need to recount the multipliers */
<<set $resetMulti = 1>>
<</if>>
/* We need to trigger clothing take off if the item is worn and the sign is - */
<<if _itemWorn && _objYds[_y].sign == "-">>
<<set _itemOff = 1>>
<</if>>
<</if>>
<</if>>
/* If the item is being used - add effects */
<<if _itemUse>>
/* If the item has effects - add them to the pocket */
<<if setup.items[_it].effect>>
<<set _itemEffectsSplit = setup.items[_it].effect.split(', ')>>
<<for _ie = 0; _ie < _itemEffectsSplit.length; _ie++>>
<<set _itemEffectAdd = _itemEffectsSplit[_ie] + "+">>
<<pocket _itemEffectAdd>>
<</for>>
<</if>>
<</if>>
/* If player has the item and and we want to wear it - we need to check effects and turn them on */
<<if _itemWear>>
/* If the item has effects - add them to the pocket */
<<if setup.items[_it].effect>>
<<set _itemEffectsSplit = setup.items[_it].effect.split(', ')>>
<<for _ie = 0; _ie < _itemEffectsSplit.length; _ie++>>
<<set _itemEffectAdd = _itemEffectsSplit[_ie] + "+">>
<<pocket _itemEffectAdd>>
<</for>>
<</if>>
/* Take off the item that is currently worn in this category and then wear the new clothing item */
<<if _itemOutfit>>
<<if $player.clothingOutfit>>
<<set _curItemRemove = setup.items.find(obj => {return obj.id === $player.clothingOutfit})>>
<<if _curItemRemove.effect>>
<<set _curItemRemoveEffectsArr = _curItemRemove.effect.split(', ')>>
<<for _ie = 0; _ie < _curItemRemoveEffectsArr.length; _ie++>>
<<set _itemEffectRemove = _curItemRemoveEffectsArr[_ie] + "-">>
<<pocket _itemEffectRemove>>
<</for>>
<</if>>
<</if>>
<<set $player.clothingOutfit = setup.items[_it].id>>
<<elseif _itemHead>>
<<if $player.clothingHead>>
<<set _curItemRemove = setup.items.find(obj => {return obj.id === $player.clothingHead})>>
<<if _curItemRemove.effect>>
<<set _curItemRemoveEffectsArr = _curItemRemove.effect.split(', ')>>
<<for _ie = 0; _ie < _curItemRemoveEffectsArr.length; _ie++>>
<<set _itemEffectRemove = _curItemRemoveEffectsArr[_ie] + "-">>
<<pocket _itemEffectRemove>>
<</for>>
<</if>>
<</if>>
<<set $player.clothingHead = setup.items[_it].id>>
<<elseif _itemAccessory>>
<<if $player.clothingAccessory>>
<<set _curItemRemove = setup.items.find(obj => {return obj.id === $player.clothingAccessory})>>
<<if _curItemRemove.effect>>
<<set _curItemRemoveEffectsArr = _curItemRemove.effect.split(', ')>>
<<for _ie = 0; _ie < _curItemRemoveEffectsArr.length; _ie++>>
<<set _itemEffectRemove = _curItemRemoveEffectsArr[_ie] + "-">>
<<pocket _itemEffectRemove>>
<</for>>
<</if>>
<</if>>
<<set $player.clothingAccessory = setup.items[_it].id>>
<</if>>
/* Reset multipliers to add clothing multis */
<<set $resetMulti = 1>>
<</if>>
/* If player has the item and we want to take it off - we need to check effects and turn them off */
<<if _itemOff>>
/* If the item has effects - remove them from player's effects */
<<if setup.items[_it].effect>>
<<set _itemEffectsSplit = setup.items[_it].effect.split(', ')>>
<<for _ie = 0; _ie < _itemEffectsSplit.length; _ie++>>
<<set _itemEffectRemove = _itemEffectsSplit[_ie] + "-">>
<<pocket _itemEffectRemove>>
<</for>>
<</if>>
/* Change the clothing worn */
<<if _itemOutfit>>
<<set $player.clothingOutfit = null>>
<<elseif _itemHead>>
<<set $player.clothingHead = null>>
<<elseif _itemAccessory>>
<<set $player.clothingAccessory = null>>
<</if>>
/* Reset multipliers to remove clothing multis */
<<set $resetMulti = 1>>
<</if>>
/* Update var for notification */
<<set _objYds[_y].value = setup.items[_it].name>>
<<break>>
<</if>>
<</for>>
/* At the end we also need to rebuild the string for easy checks */
<<set $player.itemsList = null>>
<<for _pi = 0; _pi < $player.items.length; _pi++>>
<<if $player.itemsList == null>>
<<set $player.itemsList = $player.items[_pi].id>>
<<else>>
<<set $player.itemsList = $player.itemsList + "; " + $player.items[_pi].id>>
<</if>>
<</for>>
/* Update the quests */
<<elseif _objYds[_y].type == "quest">>
/* Split setup.quests array into separate quests */
<<for _q = 0; _q < setup.quests.length; _q++>>
/* Find the quest that matches given quest id */
<<if _objYds[_y].id == setup.quests[_q].id>>
/* Check if prerequisites match */
/* 0.3.61 - if it's test mode we just let the quest to be processed even if the don't match (to make quest admin more effective). */
<<prereq setup.quests[_q].prereq>>
<<if $prereq == 1 || $test>>
/* Check if the player knows the quest */
<<set _currentQ = $player.quests.findIndex(x => x.id === setup.quests[_q].id)>>
/* If not than add it to the array */
<<if _currentQ == -1>>
<<set $player.quests.push({id: setup.quests[_q].id, active: 0, done: 0})>>
<<set _currentQ = $player.quests.findIndex(x => x.id === setup.quests[_q].id)>>
<</if>>
<<set _currentQVar = $player.quests[_currentQ]>>
/* Check if the quest is not yet finished */
<<if _currentQVar && (_currentQVar.done == 0 || _objYds[_y].value == "RESET")>>
/* Update the quest vars */
<<if _objYds[_y].value == "DONE">>
<<set _currentQVar.active = setup.quests[_q].tasks.length + 1>>
<<set _currentQVar.done = 1>>
<<elseif _objYds[_y].value == "RESET">>
<<set _skip = 1>>
<<set _splice = 1>>
<<set $player.quests.splice(_currentQ, 1)>>
/* Count 0 as 1 - I think this is for situations where we had quest+1 but then quest-1, and the end value is 0. We still want to start the quest if it wasn't started at all (not sure why) or end it if the active task is beyond length (in case if the number of tasks changed) */
<<elseif _objYds[_y].value == 0>>
<<if _currentQVar.active == 0>>
<<set _currentQVar.active = 1>>
<<if _currentQVar.active > setup.quests[_q].tasks.length>>
<<set _currentQVar.done = 1>>
<</if>>
<</if>>
/* If none of the above do the normal update */
<<else>>
<<set _currentQVar.active = _currentQVar.active + 1>>
<<if _currentQVar.active > setup.quests[_q].tasks.length>>
<<set _currentQVar.done = 1>>
<<else>>
/* If it's not done, set the new value for the sidebar */
<<set $lastQuest = $lastQuest + 1>>
<<set _currentQVar.priority = $lastQuest>>
<</if>>
/* Finally, reset the questMode */
<<if $questMode && $questMode == setup.quests[_q].id>>
<<set $questMode = null>>
<</if>>
<</if>>
<<if !_skip>>
/* Load quest name for notification */
<<set _objYds[_y].id = setup.quests[_q].name>>
<<set _notifInfo = setup.quests[_q].tasks[_currentQVar.active-1]>>
/* Check if the quest is finished */
<<if _currentQVar.done == 1>>
/* Remove any quest items for this quest that were left in the inventory */
<<for _iq = 0; _iq < setup.items.length; _iq++>>
<<if setup.items[_iq].quest == setup.quests[_q].id>>
<<if $player.itemsList && $player.itemsList.indexOf(setup.items[_iq].id) != -1>>
<<set _delItem = $player.items.findIndex(x => x.id === setup.items[_iq].id)>>
<<set $player.items.splice(_delItem, 1)>>
<</if>>
<</if>>
<</for>>
/* We also need to rebuild the itemsList string for easy checks */
<<set $player.itemsList = null>>
<<for _pi = 0; _pi < $player.items.length; _pi++>>
<<if $player.itemsList == null>>
<<set $player.itemsList = $player.items[_pi].id>>
<<else>>
<<set $player.itemsList = $player.itemsList + "; " + $player.items[_pi].id>>
<</if>>
<</for>>
/* Remove all the quest variables */
<<if setup.quests[_q].vars && setup.quests[_q].vars != "">>
<<set _questVarsArr = setup.quests[_q].vars.split("; ")>>
<<for _qv = 0; _qv < _questVarsArr.length; _qv++>>
<<set delete State.variables[_questVarsArr[_qv]]>>
<</for>>
<</if>>
/* Pocket the rewards, unless it's a dreamMode */
<<if !$dreamMode>>
<<pocket setup.quests[_q].reward>>
<<prereq setup.quests[_q].prereqExtra>>
<<if $prereq == 1>>
<<pocket setup.quests[_q].rewardExtra>>
<</if>>
/* If the quest is finished but we're in a dreamMode, push us back to the therapist office and turn off dreamMode */
<<else>>
<<set $dreamMode = null>>
<<set $sleepReset = 1>> /* Count session as a sleep */
<<set $curLoc = "cityTherapist">>
<<include "buildLoc">>
<<goto "cityTherapistHypnoEnd">>
<</if>>
<</if>>
<</if>>
/* If the quest was already finished, we skip the notification and remove it from the pocket */
<<else>>
<<set _skip = 1>>
<<set _splice = 1>>
<</if>>
/* If the prereq is not met we skip the notification, but we keep it in the pocket */
<<else>>
<<set _skip = 1>>
<</if>>
<<break>>
<</if>>
<</for>>
/* At the end we also need to rebuild the string for easy checks */
<<set $player.questsList = "">>
<<set $player.questsListDone = "">>
<<for _pq = 0; _pq < $player.quests.length; _pq++>>
<<if $player.questsList == "">>
<<set $player.questsList = $player.quests[_pq].id>>
<<else>>
<<set $player.questsList = $player.questsList + "; " + $player.quests[_pq].id>>
<</if>>
<<if $player.quests[_pq].done == 1>>
<<if $player.questsListDone == "">>
<<set $player.questsListDone = $player.quests[_pq].id>>
<<else>>
<<set $player.questsListDone = $player.questsListDone + "; " + $player.quests[_pq].id>>
<</if>>
<</if>>
<</for>>
/* Update the information about the characters */
<<elseif _objYds[_y].type == "other" && _objYds[_y].id == "info">>
/* If the value is 1 - it means there's no specific info that we need to update, so we choose a random one */
<<if _objYds[_y].value == 1>>
<<set _infoArray = ["trivia1Known", "trivia2Known", "trivia3Known", "traitKnown", "kinkKnown", "desireKnown"]>>
<<set _infoArrayUnknown = []>>
<<for _d = 0; _d < _infoArray.length; _d++>>
<<if State.getVar("$"+_objYds[_y].char+"."+_infoArray[_d]) == 0>>
<<set _infoArrayUnknown.push(_infoArray[_d])>>
<</if>>
<</for>>
<<set _infoUpdate = _infoArrayUnknown.random()>>
<<set State.setVar("$" + _objYds[_y].char + "." + _infoUpdate, 1)>>
<<else>>
<<set State.setVar("$" + _objYds[_y].char + "." + _objYds[_y].value + "Known", 1)>>
<</if>>
/* Load vars for notification */
<<if _objYds[_y].value == "kink">>
<<set _objYds[_y].id = "infoKink">>
<<elseif _objYds[_y].value == "trait">>
<<set _objYds[_y].id = "infoTrait">>
<<elseif _objYds[_y].value == "desire">>
<<set _objYds[_y].id = "infoDesire">>
<<else>>
<<set _objYds[_y].id = "info">>
<</if>>
<<set _objYds[_y].value = State.getVar("$" + _objYds[_y].char + ".name")>>
/* Update kamasutra */
<<elseif _objYds[_y].type == "kamasutra">>
/* Split setup.kamasutra array into separate items */
<<for _k = 0; _k < setup.kamasutra.length; _k++>>
/* Compare with the given kamasutra id (it's in value) */
<<if _objYds[_y].value == setup.kamasutra[_k].id>>
/* Check if the player already knows this kamasutra */
<<set _currentK = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
/* If not than add it to the array */
<<if _currentK == -1 && _objYds[_y].sign == "+">>
<<set $player.kamasutra.push({id: setup.kamasutra[_k].id, known: 1, used: 0, exp: 0, rating: 0})>>
/* If he doesn't know it, and it's "-" - remove it from pocket */
<<elseif _currentK == -1 && _objYds[_y].sign != "+">>
<<set _skip = 1>>
<<set _splice = 1>>
/* If he knows it - and it's a positive update - keep it, remove it from pocket */
<<elseif _currentK != -1 && _objYds[_y].sign == "+">>
<<set _skip = 1>>
<<set _splice = 1>>
/* If he knows it - and it's a negative update - remove it */
<<else>>
<<set $player.kamasutra.splice(_currentK, 1)>>
<<set _skip = 1>>
<<set _splice = 1>>
<</if>>
/* Load vars for notification */
<<set _objYds[_y].value = setup.kamasutra[_k].name>>
<<break>>
<</if>>
<</for>>
/* Update the player level, trait, etc.*/
<<elseif _objYds[_y].type == "other" && (_objYds[_y].id == "loveLvl" || _objYds[_y].id == "dominationLvl")>>
/* Update the player level */
<<set _lvlVar = "$" + _objYds[_y].char + "." + _objYds[_y].id>>
<<set _lvlCur = State.getVar(_lvlVar)>>
<<set State.setVar("$" + _objYds[_y].char + "." + _objYds[_y].id, _lvlCur + 1)>>
/* To change player trait we need to know level difference, because the love/dom traits come from lvl difference */
<<set _lvlDiff = $player.loveLvl - $player.dominationLvl>>
<<set _lvlSum = $player.loveLvl + $player.dominationLvl>>
/* Change the trait */
<<set _oldTrait = clone($player.trait)>>
/* Set trait prefix and name */
<<set _lvlNum = $player.loveLvl + $player.dominationLvl>>
<<for _p = 0; _p < setup.playerTraitsPrefix.length; _p++>>
<<if setup.playerTraitsPrefix[_p].from <= _lvlNum>>
<<set _traitPrefix = setup.playerTraitsPrefix[_p].name>>
/* Set the new total lvl */
<<set $player.lvl = _p>>
<</if>>
<</for>>
/* Balanced path (alpha or betas) */
<<if _lvlDiff >= -2 && _lvlDiff <= 2>>
<<if _lvlSum >= $alphaLvl>>
<<set $player.trait = "alpha">>
<<set $player.traitShrt = $player.trait>>
<<else>>
<<set $player.trait = "beta" + $player.lvl>>
<<set $player.traitShrt = "beta">>
<</if>>
/* Dom path */
<<elseif _lvlDiff < -2>>
<<if _lvlDiff >= -4>>
<<set $player.trait = "jerk">>
<<elseif _lvlDiff >= -6>>
<<set $player.trait = "bully">>
<<elseif _lvlDiff >= -8>>
<<set $player.trait = "toxic">>
<<elseif _lvlDiff >= -10>>
<<set $player.trait = "satan">>
<</if>>
<<set $player.traitShrt = $player.trait>>
/* Love path */
<<elseif _lvlDiff > 2>>
<<if _lvlDiff <= 4>>
<<set $player.trait = "nerd">>
<<elseif _lvlDiff <= 6>>
<<set $player.trait = "vegan">>
<<elseif _lvlDiff <= 8>>
<<set $player.trait = "hippie">>
<<elseif _lvlDiff <= 10>>
<<set $player.trait = "messiah">>
<</if>>
<<set $player.traitShrt = $player.trait>>
<</if>>
/* Set trait */
<<set _traitName = setup.playerTraits.find(obj => {return obj.id === $player.trait}).name>>
/* Set trait full name */
<<set $player.traitFull = _traitPrefix + " " + _traitName>>
/* If the trait was changed - update the trait multipliers */
<<if $player.trait != _oldTrait>>
/* Remove old trait multipliers */
<<set _multiSplice = []>>
<<for _tm = 0; _tm < $multipliers.length; _tm++>>
<<if $multipliers[_tm].type == "trait" && $multipliers[_tm].char == "player">>
<<set _multiSplice.push(_tm)>>
<</if>>
<</for>>
<<if _multiSplice>>
<<set _multiSpliceRev = _multiSplice.reverse()>>
<<for _ms = 0; _ms < _multiSpliceRev.length; _ms++>>
<<set $multipliers.splice(_multiSpliceRev[_ms], 1)>>
<</for>>
<</if>>
/* Add new trait multipliers */
<<set _multi = splitter(setup.playerTraits.find(obj => {return obj.id === $player.trait}).multi)>>
<<for _ntm = 0; _ntm < _multi.length; _ntm++>>
<<set _multi[_ntm].type = "trait">>
<<set $multipliers.push(_multi[_ntm])>>
<</for>>
<<set $resetMulti = 1>>
/* If the trait is changing - we need an additional notification to tell user about it */
/* Check if the notification array exists, because backwards compatibility has problems with creating empty arrays */
<<if !$notifications>>
<<set $notifications = []>>
<</if>>
/* Load notification */
<<set $notifications.push({type: "trait", id: $player.trait, value: $player.traitFull, sign: "+", char: "player", info: null}) >>
<</if>>
/* If it's sex, and the yields are cumMax or vigour, it came from new effect and we need to update it on the fly */
<<elseif $sex && _objYds[_y].type == "sexBoost" && (_objYds[_y].id == "cumMax" || _objYds[_y].id == "vigour")>>
/* Round the value just in case */
<<if Util.isNumeric(_objYds[_y].value)>>
<<set _objYds[_y].value = Math.round(_objYds[_y].value)>>
/* If sign is "-", we need to add "-" to the value */
<<if _objYds[_y].sign == "-" && _objYds[_y].value > 0>>
<<set _objYds[_y].value = parseInt(_objYds[_y].sign + _objYds[_y].value)>>
<</if>>
<</if>>
/* Build a var for the update */
<<set _stat = '$player.' + _objYds[_y].id>>
/* Count the new value for the stat */
<<set _valueNew = Math.round(State.getVar(_stat)) + _objYds[_y].value>>
/* Adjust if the new value is too small */
<<set _valueNew = _valueNew < 0 ? 0 : _valueNew>>
/* Update the stat */
<<set State.setVar(_stat, _valueNew)>>
/* If it's questMode - we turn it on at the very end, to make sure the quest is already updated when we turn it on */
<<elseif _objYds[_y].type == "var" && _objYds[_y].id == "questMode">>
/* Rebuild the variable */
<<set _var = '$' + _objYds[_y].id>>
/* Update the variable value - if "null" or 0 or "-" change the var = null, otherwise change it to the value */
<<if _objYds[_y].value == "null" || _objYds[_y].value == 0 || _objYds[_y].sign == "-">>
<<set State.setVar(_var, null)>>
<<else>>
<<set State.setVar(_var, _objYds[_y].value)>>
<</if>>
/* Skip the notification and remove from pocket */
<<set _skip = 1>>
<<set _splice = 1>>
/* If nothing matches - fuck it */
<<else>>
<<set _skip = 1>>
<</if>>
/* If everything ok - load notification */
<<if !_skip>>
/* Change the value for quests */
<<if _objYds[_y].type == "quest" && _currentQVar>>
<<if _currentQVar.done == 1>>
<<set _objYds[_y].value = "DONE">>
<<elseif _currentQVar.active == 1>>
<<set _objYds[_y].value = "NEW">>
<</if>>
<</if>>
/* If it's a header - wait before displaying it, otherwise display it right away */
<<if _switchYds == "header">>
/* We have to check if notifications array exists, because backwards compatibility has problems with creating arrays or something else is wrong */
<<if !$notifications>>
<<set $notifications = []>>
<</if>>
<<set $notifications.push({type: _objYds[_y].type, id: _objYds[_y].id, value: _objYds[_y].value, sign: _objYds[_y].sign, char: _objYds[_y].char, info: _notifInfo}) >>
<<else>>
/* If the notifications are not hidden - show notifications */
<<if !_classes || _classes.indexOf('notifHide') == -1>>
<<notify _objYds[_y].type _objYds[_y].id _objYds[_y].value _objYds[_y].sign _objYds[_y].char _notifInfo _classes>>
<</if>>
<</if>>
<</if>>
/* Remove from pocket if we don't skip, or we force splice */
<<if !_skip || _splice>>
/* 0.3.47 EXPERIMENTAL - I've changed the way the stuff is removed from pocket in yields - before I was adding all the stuff to be removed to separate array, and then remove it all at one go at the the end, now I remove stuff during for itself, while it's running */
/* Remove the stat from the pocket array */
<<if _instant>>
<<set $pocketInstant.splice(_y, 1)>>
<<else>>
<<set $pocket.splice(_y, 1)>>
<</if>>
/* 0.3.47 EXPERIMENTAL - there was a problem that when quest A (karmaBad) had in prerequisites finished quest B (karmaIntro=DONE), but it's launched from quest B itself, then when quest A was processed by yields, the prerequisites were not yet met, so it was skipped until the second yields launch (so usually after changing location etc.). So as an experiment - let's reset the _y each time we remove something from yields, so that even if quest A is skipped, it's rerun in the same yields launch. */
/* Rerun the for from the start (needs to be -1, because we need 0, but for appends the number at the end) */
<<set _y = -1>>
<</if>>
<</if>>
<</if>>
/* Last thing we do is update the yields, as there might be new pocket items in the pocket */
<<if _instant>>
<<set _objYds = $pocketInstant>>
<<else>>
<<set _objYds = $pocket>>
<</if>>
<</for>>
/* Update topBar info */
<<if !tags($curPas).contains("noSideBar")>>
<<timed 500ms>>
<<replace "#topBar">><<include "topBar">><</replace>>
<</timed>>
<</if>>
/* TEST: */
<<if $test && $testReport == "all">>
<<script>>console.log("yields to splice:");<</script>>
<<script>>console.log(State.temporary.spliceYds);<</script>>
<</if>>
/* Update lvlup variable - it should be here, because it updates on different situations (lov/dom/des/lvlup) */
<<set _lvlUpCost = setup.lvlUpCost>>
<<set _lvlUpNum = $player.loveLvl + $player.dominationLvl>>
/* We skip 1 and 2, because first 2 levels are default */
<<for _lu = 3; _lu <= _lvlUpNum; _lu++>>
<<set _lvlUpCost = Math.round(_lvlUpCost * setup.lvlUpMulti)>>
<</for>>
/* Reset the vars */
<<set $lvlup = null>>
<<set $lvlupDom = null>>
<<set $lvlupLove = null>>
<<if $player.domination >= (_lvlUpCost * $defXpMulti)>>
<<set $lvlup = 1>>
<<set $lvlupDom = 1>>
<</if>>
<<if $player.love >= (_lvlUpCost * $defXpMulti)>>
<<set $lvlup = 1>>
<<set $lvlupLove = 1>>
<</if>>
/* If there is yieldsForce var - we need = nullify it */
<<set $yieldsForce = null>>
/* If we were using pocketInstant for yields and it's not empty after we finished */
<<if _instant && $pocketInstant && $pocketInstant.length > 0>>
/* If something's left in pocketInstant - combine it with pocket */
<<for _pi = 0; _pi < $pocketInstant.length; _pi++>>
<<set $pocket.push($pocketInstant[_pi])>>
<</for>>
/* Empty pocketInstant */
<<set $pocketInstant = []>>
<</if>>
/* TEST: */
<<if $test && $testReport != "hide">>
<<script>>console.log(" ■ ■ ■ ■ YIELDS END ■ ■ ■ ■ ");<</script>>
<</if>>
<</widget>>/* player */
/* Parse the yields on load */
<<yields null "popup">>
/* Reset the multipliers */
<<resetMulti>>
/* Help */
<div class="expand help">
<p>Need some help?</p>
<div class="expandContent">
<p>In //Become Alpha// there are two main routes - <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon"> ''//Domination//'' and <img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> ''//Love//''. Throughout the game you gather //experience// in both those routes, and if you gather enough of it - you can //level up//.</p>
<p>The number of <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> you'll get from an action in the game depends on your ''//Multipliers//''. At first they are 100%, but it will change when your //trait// will change, or when you're under an //effect// (eg. if you're drunk).</p>
<p>To make things even more fun and easy to grasp - other characters also have //multipliers//! When you're conversing with someone, and you click a button with <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> - it goes through the //multipliers// (both character's and yours), and then - BAM! - you get <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> //experience//, and she gets <img @src="setup.ImagePath+'icons/desire.png'" class="statIcon"> ''//Desire//''. Magic!</p>
<hr>
<p>As for the trait - when you're starting the game, you're just a regular ''//Beta Male//''. You can turn into ''//The Alpha Male//'' if you gain enough levels in <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon">. But if your growth won't be balanced - well, you'll see...</p>
<hr>
<p>Additionally to all that shit, there's couple more things you might want to know:</p>
<p><img @src="setup.ImagePath+'icons/cash.png'" class="statIcon"> ''Cash'' - you use it to pay your rent and buy pointless stuff to fill the void within.</p>
<p>''//Clothing//'' - wear it to improve your <img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">/<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> multipliers, as well as getting some additional effects.</p>
<p>''//Items//'' - keys can unlock new story points, others, like beer, can be used and produce an effect (and alcoholism).</p>
<p>''//Effects//'' - each effect can give you certain boosts or bonuses (eg. for your multipliers), but there can also be penalties. Effects usually last for just one day, but some take way longer (I'm thinking about your virginity, bud).</p>
<p>''//Kamasutra//'' - it's basically your sexual knowledge. These are sex positions that you will be able to use during sex with characters. You learn new sex positions during leveling up. The stars on buttons indicate how much experienced you are in using those positions. The more you use them during sex, the more stars you will get:</p>
<table width="100%">
<tr>
<td width="2%"></td><td><div style="--rating: 1;" class="Stars1"></div></td><td>1 star will give you ability to repeat this sex position many times in a row.</td>
</tr>
<tr>
<td></td><td><div style="--rating: 2;" class="Stars2"></div></td><td>2 stars will give you additional <img @src="setup.ImagePath+'icons/vigour.png'" class="statIcon"> Vigour while using this position.</td>
</tr>
<tr>
<td></td><td><div style="--rating: 3;" class="Stars3"></div></td><td>3 stars will give your sex partner more <img @src="setup.ImagePath+'icons/squirt.png'" class="statIcon"> Orgasm from getting fucked with this position.</td>
</tr>
</table>
<p>And that's the core of Become Alpha. Have fun!</p>
<p>''TL;DR: max your dom and love to get a lot of fucky-fucky.''</p>
</div>
</div>
/* Player info */
<h1 class="center">$player.name $player.surname</h1>
<<media `"characters/player/" + $player.trait + "/portrait_big.jpg"`>>
/* Effects list */
<h3>Current effects</h3>
/* Test tools */
<<if $test>>
<<for _e to 0; _e < setup.effects.length; _e++>>
<<capture _e>>
<<link `"+ " + setup.effects[_e].name + " "`>>
<<pocket `setup.effects[_e].id + "+"`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</for>>
<br class="clear">
<br class="clear">
<</if>>
/* If player is not under any effects - display info */
<<if $player.effects.length == 0>>
<p class="desc center">You are not under any effect.</p>
<</if>>
/* Display effects */
<<for _e to 0; _e < $player.effects.length; _e++>>
<<if $player.effects[_e].left > 0 || $player.effects[_e].left == "ongoing">>
<<set _effectCur = setup.effects.find(obj => {return obj.id === $player.effects[_e].id})>>
<<set _multiArr = splitter(_effectCur.multi)>>
<<if _effectCur.type == "bad">>
<<set _effectClass = "item tooltip lose">>
<<elseif _effectCur.type == "good">>
<<set _effectClass = "item tooltip gain">>
<<else>>
<<set _effectClass = "item tooltip neutral">>
<</if>>
<div @class="_effectClass">
<span>_effectCur.name</span>
<div class="tooltipText">
<table>
<tr>
<td colspan=2>_effectCur.desc</td>
</tr>
<tr>
<td>Time left</td>
<td><span class="statValue">$player.effects[_e].left <<if _effectCur.duration != "ongoing">><span class="desc">days</span><</if>></span></td>
</tr>
<<if _multiArr.length > 0>>
<tr>
<td>Active modifiers</td>
<td>
<<for _em = 0; _em < _multiArr.length; _em++>>
<<if _multiArr[_em].id != "travel">>
<<if _multiArr[_em].sign == "*">>
<<set _multiArr[_em].sign = "×">>
<<set _multiArr[_em].value = Math.round(_multiArr[_em].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _multiArr[_em].id + '.png'" class="statIcon">
<span class="statValue">_multiArr[_em].sign _multiArr[_em].value _endSign</span>
</span>
<</if>>
<</for>>
</td>
</tr>
<</if>>
</table>
</div>
</div>
<</if>>
<</for>>
<br class="clear">
/* Player trait and stats table */
/* Select info about trait */
<<for _pT = 0; _pT < setup.playerTraits.length; _pT++>>
<<if setup.playerTraits[_pT].id == $player.trait>>
<<set _playerTrait = setup.playerTraits[_pT].name>>
<<set _playerTraitDesc = setup.playerTraits[_pT].desc>>
<</if>>
<</for>>
/* We need to turn multipliers into percentages. */
<<set _loveMulti = Math.round($player.loveMulti * 100)>>
<<set _dominationMulti = Math.round($player.dominationMulti * 100)>>
/* Fill temporary array with multipliers for tooltips */
<<set _multi = clone($multipliers)>>
<<set _multiArr = []>>
<<for _m = 0; _m < _multi.length; _m++>>
<<if _multi[_m].char == "player">>
/* Set missing names (mostly because of the backwards compatibility) */
<<if _multi[_m].type == "trait" && !_multi[_m].name>>
<<set _multi[_m].name = _playerTrait>>
<<elseif !_multi[_m].name>>
<<set _multi[_m].name = "Other">>
<</if>>
/* Multiply by 100 to get percentage */
<<set _multi[_m].value = Math.round(_multi[_m].value * 100)>>
/* Save trait multi for display in traitbox */
<<if _multi[_m].type == "trait" && _multi[_m].id == "love">>
<<set _loveMultiTrait = _multi[_m].value>>
<<elseif _multi[_m].type == "trait" && _multi[_m].id == "domination">>
<<set _dominationMultiTrait = _multi[_m].value>>
<</if>>
<<set _multiArr.push(_multi[_m])>>
<</if>>
<</for>>
<<set _multi = null>>
/* Select info about level up cost */
<<set _lvlUpCost = setup.lvlUpCost>>
<<set _lvlUpNum = $player.loveLvl + $player.dominationLvl>>
/* We skip 1 and 2, because first 2 levels are default */
<<for _i = 3; _i <= _lvlUpNum; _i++>>
<<set _lvlUpCost = Math.round(_lvlUpCost * setup.lvlUpMulti)>>
<</for>>
/* Add default xp multiplier */
<<set _lvlUpCost = _lvlUpCost * $defXpMulti>>
/* Start the playerStats div */
<div id="playerStats">
/* Player's trait */
<div class="traitBox">
<h3>Trait: <strong>''$player.traitFull''</strong></h3>
<span class="statSml">
<img @src="setup.ImagePath+'icons/love.png'" class="statIcon">
<span class="statValue"><span class="statValueSml">×</span> _loveMultiTrait <span class="desc">%</span></span>
</span>
<span class="statSml">
<img @src="setup.ImagePath+'icons/domination.png'" class="statIcon">
<span class="statValue"><span class="statValueSml">×</span> _dominationMultiTrait <span class="desc">%</span></span>
</span>
<p class="desc">_playerTraitDesc</p>
</div>
/* Player's stats */
<div class="statsBox">
<table class="player">
<tr class="header">
<td width="30%"></td>
<td width="20%" class="desc center">Multiplier</td>
<td></td>
<td width="20%" class="desc center">Current</td>
<td></td>
<td width="20%" class="desc center">Level</td>
</tr>
<tr class="statsRow bottomBorder">
<td>
<img @src="setup.ImagePath+'icons/love.png'" class="statIcon"> ''Love''
</td>
<td>
<div class="uiData multi tooltip">
<span>_loveMulti</span>
<span class="desc">%</span>
<div class="tooltipText">
<table>
<<if $supporter && $fapYields>>
<tr>
<td><span class="statValue"><span class="statValueSml">×</span> <<print $defMulti * 100>> <span class="desc">%</span></span></td>
<td>Fap Mode</td>
</tr>
<</if>>
<<for _row = 0; _row < _multiArr.length; _row++>>
<<if _multiArr[_row].id == "love">>
<tr>
<td><span class="statValue"><span class="statValueSml">×</span> _multiArr[_row].value <span class="desc">%</span></span></td>
<td>_multiArr[_row].name <span class="statValueSml">(_multiArr[_row].type)</span></td>
</tr>
<</if>>
<</for>>
</table>
</div>
</div>
</td>
<td class="bracket">
>
</td>
<td>
<div class="uiData">$player.love <span class="desc">xp.</span></div>
</td>
<td class="bracket">
>
</td>
<td>
<div class="uiData level">$player.loveLvl</div>
</td>
</tr>
<tr class="statsRow bottomBorder">
<td>
<img @src="setup.ImagePath+'icons/domination.png'" class="statIcon"> ''Domination''
</td>
<td>
<div class="uiData multi tooltip">
<span>_dominationMulti</span>
<span class="desc">%</span>
<div class="tooltipText">
<table>
<<if $supporter && $fapYields>>
<tr>
<td><span class="statValue"><span class="statValueSml">×</span> <<print $defMulti * 100>> <span class="desc">%</span></span></td>
<td>Fap Mode</td>
</tr>
<</if>>
<<for _row = 0; _row < _multiArr.length; _row++>>
<<if _multiArr[_row].id == "domination">>
<tr>
<td><span class="statValue"><span class="statValueSml">×</span> _multiArr[_row].value <span class="desc">%</span></span></td>
<td>_multiArr[_row].name <span class="statValueSml">(_multiArr[_row].type)</span></td>
</tr>
<</if>>
<</for>>
</table>
</div>
</div>
</td>
<td class="bracket">
>
</td>
<td>
<div class="uiData">$player.domination <span class="desc">xp.</span></div>
</td>
<td class="bracket">
>
</td>
<td>
<div class="uiData level">$player.dominationLvl</div>
</td>
</tr>
<tr class="statsRowDark">
<td>
<img @src="setup.ImagePath+'icons/cash.png'" class="statIcon"> ''Cash''
</td>
<td>
<div class="uiData">$player.cash <span class="desc">$</span></div>
</td>
<td></td>
<td>
<div class="uiData desc"><span class="desc">Allowance:</span> +$player.allowance <span class="desc">$/week</span></div>
<div class="uiData desc"><span class="desc">Rent:</span> -$daphne.rent <span class="desc">$/week</span></div>
<<if $daphne.debt > 0>>
<div class="uiData desc"><span class="desc">Debt:</span> $daphne.debt <span class="desc">$</span></div>
<</if>>
</td>
<td class="bracket">
</td>
<td class="statsRowHangman">
<div class="uiData desc"><span class="desc">Lvl up cost:</span><br><<print _lvlUpCost>> <span class="desc">xp.</span></div>
</td>
</tr>
</table>
</div>
/* Finish the playerStats div and add break (needs to be div, because otherwise it doesn't work - above content is float left)*/
</div>
<div class="break"></div>
/* Clothing */
<h2>Clothing</h2>
/* Put items in categories */
<<set _outfit = []>>
<<set _head = []>>
<<set _accessory = []>>
<<set _key = []>>
<<set _consumable = []>>
<<set _illegal = []>>
<<set _backpack = []>>
<<for _i = 0; _i < $player.items.length; _i++>>
<<if $player.items[_i].quantity > 0>>
<<set _curData = setup.items.find(obj => {return obj.id === $player.items[_i].id})>>
<<if _curData.outfit>>
<<set _outfit.push(_i)>>
<<elseif _curData.accessory>>
<<set _accessory.push(_i)>>
<<elseif _curData.head>>
<<set _head.push(_i)>>
<<elseif _curData.key>>
<<set _key.push(_i)>>
<<elseif _curData.illegal>>
<<set _illegal.push(_i)>>
<<elseif _curData.consumable>>
<<set _consumable.push(_i)>>
<<else>>
<<set _backpack.push(_i)>>
<</if>>
<</if>>
<</for>>
<div>
<div class="item clothing">
<div class="clothingWorn">
<<set _itemWorn = setup.items.find(x => x.id === $player.clothingHead)>>
<<if _itemWorn>>
/* Display the image of worn item */
<img @src="setup.ImagePath + 'items/head/' + $player.clothingHead + '.png'" class="clothingPic">
/* Display multis of the worn item */
<<if _itemWorn.multi>>
<<set _itemWornMultiArr = splitter(_itemWorn.multi)>>
<<for _im = 0; _im < _itemWornMultiArr.length; _im++>>
<<if _itemWornMultiArr[_im].id != "travel">>
<<if _itemWornMultiArr[_im].sign == "*">>
<<set _itemWornMultiArr[_im].sign = "×">>
<<set _itemWornMultiArr[_im].value = Math.round(_itemWornMultiArr[_im].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _itemWornMultiArr[_im].id + '.png'" class="statIcon">
<span class="statValue"><<print _itemWornMultiArr[_im].sign>><<print _itemWornMultiArr[_im].value>><<print _endSign>></span>
</span>
<</if>>
<</for>>
<</if>>
/* Display effects of the worn item */
<<if _itemWorn.effect>>
/* Split the effects of this item and go through them */
<<set _itemWornEffectsArr = _itemWorn.effect.split(', ')>>
<<for _e = 0; _e < _itemWornEffectsArr.length; _e++>>
<<if _itemEffectsYields == "">>
<<set _itemEffectsYields = _itemWornEffectsArr[_e] + "+">>
<<else>>
<<set _itemEffectsYields = _itemEffectsYields + "; " + _itemWornEffectsArr[_e] + "+">>
<</if>>
<<set _effectCur = setup.effects.find(obj => {return obj.id === _itemWornEffectsArr[_e]})>>
<<if _effectCur.multi>>
<<set _effectMulti = splitter(_effectCur.multi)>>
<</if>>
<<if _effectCur.type != null>>
<<set _effectClass = "statValue item tooltip2 " + _effectCur.type>>
<<else>>
<<set _effectClass = "statValue item tooltip2">>
<</if>>
<div @class="_effectClass">
''_effectCur.name''
<div class="tooltipText2">
<table>
<tr>
<td colspan=2 class="desc">_effectCur.desc</td>
</tr>
<tr>
<td>Time</td>
<td><span class="statValue">_effectCur.duration <<if _effectCur.duration != "ongoing">><span class="desc">days</span><</if>></span></td>
</tr>
<<if _effectMulti && _effectMulti.length > 0>>
<tr>
<td>Modifiers</td>
<td>
<<for _em = 0; _em < _effectMulti.length; _em++>>
<<if _effectMulti[_em].id != "travel">>
<<if _effectMulti[_em].sign == "*">>
<<set _effectMulti[_em].sign = "×">>
<<set _effectMulti[_em].value = Math.round(_effectMulti[_em].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _effectMulti[_em].id + '.png'" class="statIcon">
<span class="statValue">_effectMulti[_em].sign _effectMulti[_em].value _endSign</span>
</span>
<</if>>
<</for>>
</td>
</tr>
<</if>>
</table>
</div>
</div>
<</for>>
<</if>>
<<else>>
/* Display the image of no item */
<img @src="setup.ImagePath + 'items/head/nothingHead.png'" class="clothingPic">
<</if>>
</div>
<div class="clothingItems">
<h3>Head</h3>
<<if _head.length == 0>>
<p class="desc center">Your have nothing to put on your head.</p>
<</if>>
<<for _ic = 0; _ic < _head.length; _ic++>>
<<set _cur = $player.items[_head[_ic]]>>
<<set _curData = setup.items.find(x => x.id === _cur.id)>>
<<btnItem "head" _curData.id _curData.name _cur.quantity _curData.desc _curData.multi _curData.effect>>
<</for>>
/* Display test tools */
<<if $test>>
<br class="clear">
<<for _i = 0; _i < setup.items.length; _i++>>
<<if setup.items[_i].head>>
<<capture _i>>
<<link `"+ " + setup.items[_i].name + " "`>>
<<pocket `setup.items[_i].id + '+1'`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</if>>
<</for>>
<</if>>
</div>
</div>
<div class="item clothing">
<div class="clothingWorn">
<<set _itemWorn = setup.items.find(x => x.id === $player.clothingAccessory)>>
<<if _itemWorn>>
/* Display the image of worn item */
<img @src="setup.ImagePath + 'items/accessory/' + $player.clothingAccessory + '.png'" class="clothingPic">
/* Display multis of the worn item */
<<if _itemWorn.multi>>
<<set _itemWornMultiArr = splitter(_itemWorn.multi)>>
<<for _im = 0; _im < _itemWornMultiArr.length; _im++>>
<<if _itemWornMultiArr[_im].id != "travel">>
<<if _itemWornMultiArr[_im].sign == "*">>
<<set _itemWornMultiArr[_im].sign = "×">>
<<set _itemWornMultiArr[_im].value = Math.round(_itemWornMultiArr[_im].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _itemWornMultiArr[_im].id + '.png'" class="statIcon">
<span class="statValue"><<print _itemWornMultiArr[_im].sign>><<print _itemWornMultiArr[_im].value>><<print _endSign>></span>
</span>
<</if>>
<</for>>
<</if>>
/* Display effects of the worn item */
<<if _itemWorn.effect>>
/* Split the effects of this item and go through them */
<<set _itemWornEffectsArr = _itemWorn.effect.split(', ')>>
<<for _e = 0; _e < _itemWornEffectsArr.length; _e++>>
<<if _itemEffectsYields == "">>
<<set _itemEffectsYields = _itemWornEffectsArr[_e] + "+">>
<<else>>
<<set _itemEffectsYields = _itemEffectsYields + "; " + _itemWornEffectsArr[_e] + "+">>
<</if>>
<<set _effectCur = setup.effects.find(obj => {return obj.id === _itemWornEffectsArr[_e]})>>
<<if _effectCur.multi>>
<<set _effectMulti = splitter(_effectCur.multi)>>
<</if>>
<<if _effectCur.type != null>>
<<set _effectClass = "statValue item tooltip2 " + _effectCur.type>>
<<else>>
<<set _effectClass = "statValue item tooltip2">>
<</if>>
<div @class="_effectClass">
''_effectCur.name''
<div class="tooltipText2">
<table>
<tr>
<td colspan=2 class="desc">_effectCur.desc</td>
</tr>
<tr>
<td>Time</td>
<td><span class="statValue">_effectCur.duration <<if _effectCur.duration != "ongoing">><span class="desc">days</span><</if>></span></td>
</tr>
<<if _effectMulti && _effectMulti.length > 0>>
<tr>
<td>Modifiers</td>
<td>
<<for _em = 0; _em < _effectMulti.length; _em++>>
<<if _effectMulti[_em].id != "travel">>
<<if _effectMulti[_em].sign == "*">>
<<set _effectMulti[_em].sign = "×">>
<<set _effectMulti[_em].value = Math.round(_effectMulti[_em].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _effectMulti[_em].id + '.png'" class="statIcon">
<span class="statValue">_effectMulti[_em].sign _effectMulti[_em].value _endSign</span>
</span>
<</if>>
<</for>>
</td>
</tr>
<</if>>
</table>
</div>
</div>
<</for>>
<</if>>
<<else>>
/* Display the image of no item */
<img @src="setup.ImagePath + 'items/accessory/nothingAccessory.png'" class="clothingPic">
<</if>>
</div>
<div class="clothingItems">
<h3>Accessory</h3>
<<if _accessory.length == 0>>
<p class="desc center">Your have no accessories.</p>
<</if>>
<<for _ic = 0; _ic < _accessory.length; _ic++>>
<<set _cur = $player.items[_accessory[_ic]]>>
<<set _curData = setup.items.find(x => x.id === _cur.id)>>
<<btnItem "accessory" _curData.id _curData.name _cur.quantity _curData.desc _curData.multi _curData.effect>>
<</for>>
/* Display test tools */
<<if $test>>
<br class="clear">
<<for _i = 0; _i < setup.items.length; _i++>>
<<if setup.items[_i].accessory>>
<<capture _i>>
<<link `"+ " + setup.items[_i].name + " "`>>
<<pocket `setup.items[_i].id + '+1'`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</if>>
<</for>>
<</if>>
</div>
</div>
<div class="item clothing">
<div class="clothingWorn">
<<set _itemWorn = setup.items.find(x => x.id === $player.clothingOutfit)>>
<<if _itemWorn>>
/* Display the image of worn item */
<img @src="setup.ImagePath + 'items/outfit/' + $player.clothingOutfit + '.png'" class="clothingPic">
/* Display multis of the worn item */
<<if _itemWorn.multi>>
<<set _itemWornMultiArr = splitter(_itemWorn.multi)>>
<<for _im = 0; _im < _itemWornMultiArr.length; _im++>>
<<if _itemWornMultiArr[_im].id != "travel">>
<<if _itemWornMultiArr[_im].sign == "*">>
<<set _itemWornMultiArr[_im].sign = "×">>
<<set _itemWornMultiArr[_im].value = Math.round(_itemWornMultiArr[_im].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _itemWornMultiArr[_im].id + '.png'" class="statIcon">
<span class="statValue"><<print _itemWornMultiArr[_im].sign>><<print _itemWornMultiArr[_im].value>><<print _endSign>></span>
</span>
<</if>>
<</for>>
<</if>>
/* Display effects of the worn item */
<<if _itemWorn.effect>>
/* Split the effects of this item and go through them */
<<set _itemWornEffectsArr = _itemWorn.effect.split(', ')>>
<<for _e = 0; _e < _itemWornEffectsArr.length; _e++>>
<<if _itemEffectsYields == "">>
<<set _itemEffectsYields = _itemWornEffectsArr[_e] + "+">>
<<else>>
<<set _itemEffectsYields = _itemEffectsYields + "; " + _itemWornEffectsArr[_e] + "+">>
<</if>>
<<set _effectCur = setup.effects.find(obj => {return obj.id === _itemWornEffectsArr[_e]})>>
<<if _effectCur.multi>>
<<set _effectMulti = splitter(_effectCur.multi)>>
<</if>>
<<if _effectCur.type != null>>
<<set _effectClass = "statValue item tooltip2 " + _effectCur.type>>
<<else>>
<<set _effectClass = "statValue item tooltip2">>
<</if>>
<div @class="_effectClass">
''_effectCur.name''
<div class="tooltipText2">
<table>
<tr>
<td colspan=2 class="desc">_effectCur.desc</td>
</tr>
<tr>
<td>Time</td>
<td><span class="statValue">_effectCur.duration <<if _effectCur.duration != "ongoing">><span class="desc">days</span><</if>></span></td>
</tr>
<<if _effectMulti && _effectMulti.length > 0>>
<tr>
<td>Modifiers</td>
<td>
<<for _em = 0; _em < _effectMulti.length; _em++>>
<<if _effectMulti[_em].id != "travel">>
<<if _effectMulti[_em].sign == "*">>
<<set _effectMulti[_em].sign = "×">>
<<set _effectMulti[_em].value = Math.round(_effectMulti[_em].value * 100)>>
<<set _endSign = "<span class=\"desc\">%</span>">>
<<else>>
<<set _endSign = "">>
<</if>>
<span class="statSml">
<img @src="setup.ImagePath + 'icons/' + _effectMulti[_em].id + '.png'" class="statIcon">
<span class="statValue">_effectMulti[_em].sign _effectMulti[_em].value _endSign</span>
</span>
<</if>>
<</for>>
</td>
</tr>
<</if>>
</table>
</div>
</div>
<</for>>
<</if>>
<<else>>
/* Display the image of no item */
<img @src="setup.ImagePath + 'items/outfit/nothingOutfit.png'" class="clothingPic">
<</if>>
</div>
<div class="clothingItems">
<h3>Outfit</h3>
<<if _outfit.length == 0>>
<p class="desc center">Your have no outfits.</p>
<</if>>
<<for _ic = 0; _ic < _outfit.length; _ic++>>
<<set _cur = $player.items[_outfit[_ic]]>>
<<set _curData = setup.items.find(x => x.id === _cur.id)>>
<<btnItem "outfit" _curData.id _curData.name _cur.quantity _curData.desc _curData.multi _curData.effect>>
<</for>>
/* Display test tools */
<<if $test>>
<br class="clear">
<<for _i = 0; _i < setup.items.length; _i++>>
<<if setup.items[_i].outfit>>
<<capture _i>>
<<link `"+ " + setup.items[_i].name + " "`>>
<<pocket `setup.items[_i].id + '+1'`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</if>>
<</for>>
<</if>>
</div>
</div>
</div>
<br class="clear">
<br class="clear">
<h2>Consumables</h2>
/* Display test tools */
<<if $test>>
<<for _i = 0; _i < setup.items.length; _i++>>
<<if setup.items[_i].consumable || setup.items[_i].illegal>>
<<capture _i>>
<<link `"+ " + setup.items[_i].name + " "`>>
<<pocket `setup.items[_i].id + '+1'`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</if>>
<</for>>
<br class="clear">
<</if>>
<<if _consumable.length == 0 && _illegal.length == 0>>
<p class="desc center">Your have no consumable items.</p>
<</if>>
<<for _ic = 0; _ic < _consumable.length; _ic++>>
<<set _cur = $player.items[_consumable[_ic]]>>
<<set _curData = setup.items.find(x => x.id === _cur.id)>>
<<btnItem "consumable" _curData.id _curData.name _cur.quantity _curData.desc _curData.multi _curData.effect>>
<</for>>
<<for _ii = 0; _ii < _illegal.length; _ii++>>
<<set _cur = $player.items[_illegal[_ii]]>>
<<set _curData = setup.items.find(x => x.id === _cur.id)>>
<<btnItem "illegal" _curData.id _curData.name _cur.quantity _curData.desc _curData.multi _curData.effect>>
<</for>>
<br class="clear">
<br class="clear">
<div class="expand more">
<h2>Backpack</h2>
<div class="expandContent">
/* Display test tools */
<<if $test>>
<<for _i = 0; _i < setup.items.length; _i++>>
<<if !setup.items[_i].head && !setup.items[_i].accessory && !setup.items[_i].outfit && !setup.items[_i].consumables && !setup.items[_i].illegal>>
<<capture _i>>
<<link `"+ " + setup.items[_i].name + " "`>>
<<pocket `setup.items[_i].id + '+1'`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</if>>
<</for>>
<br class="clear">
<</if>>
<<if _backpack.length == 0>>
<p class="desc center">Your backpack is empty.</p>
<</if>>
<<for _ib = 0; _ib < _backpack.length; _ib++>>
<<set _cur = $player.items[_backpack[_ib]]>>
<<set _curData = setup.items.find(x => x.id === _cur.id)>>
<<btnItem "backpack" _curData.id _curData.name _cur.quantity _curData.desc _curData.multi _curData.effect>>
<</for>>
</div>
</div>
<br class="clear">
<br class="clear">
/* College studies */
<div class="expand more">
<h2>College studies</h2>
<div class="expandContent">
<<if $test>>
<<link "+ art">>
<<set $player.college_art = $player.college_art + 3>>
<</link>>
<<link "+ sex ed">>
<<set $player.college_sex_ed = $player.college_sex_ed + 3>>
<</link>>
<<link "+ nerd">>
<<set $player.college_nerd = $player.college_nerd + 3>>
<</link>>
<<link "+ fem studies">>
<<set $player.college_fem_studies = $player.college_fem_studies + 3>>
<</link>>
<br class="clear">
<</if>>
/* Count class ratings */
<<set _maxRating = $maxRatingCollege>>
<<set _classRating_art = Math.round( ($player.college_art / (_maxRating / 3) ) * 10 ) / 10 >>
<<if _classRating_art < 1>>
<<set _classStars_art = "Stars0">>
<<elseif _classRating_art < 2>>
<<set _classStars_art = "Stars1">>
<<elseif _classRating_art < 3>>
<<set _classStars_art = "Stars2">>
<<else>>
<<set _classStars_art = "Stars3">>
<</if>>
<<set _classRating_sex_ed = Math.round( ($player.college_sex_ed / (_maxRating / 3) ) * 10 ) / 10 >>
<<if _classRating_sex_ed < 1>>
<<set _classStars_sex_ed = "Stars0">>
<<elseif _classRating_sex_ed < 2>>
<<set _classStars_sex_ed = "Stars1">>
<<elseif _classRating_sex_ed < 3>>
<<set _classStars_sex_ed = "Stars2">>
<<else>>
<<set _classStars_sex_ed = "Stars3">>
<</if>>
<<set _classRating_nerd = Math.round( ($player.college_nerd / (_maxRating / 3) ) * 10 ) / 10 >>
<<if _classRating_nerd < 1>>
<<set _classStars_nerd = "Stars0">>
<<elseif _classRating_nerd < 2>>
<<set _classStars_nerd = "Stars1">>
<<elseif _classRating_nerd < 3>>
<<set _classStars_nerd = "Stars2">>
<<else>>
<<set _classStars_nerd = "Stars3">>
<</if>>
<<set _classRating_fem_studies = Math.round( ($player.college_fem_studies / (_maxRating / 3) ) * 10 ) / 10 >>
<<if _classRating_fem_studies < 1>>
<<set _classStars_fem_studies = "Stars0">>
<<elseif _classRating_fem_studies < 2>>
<<set _classStars_fem_studies = "Stars1">>
<<elseif _classRating_fem_studies < 3>>
<<set _classStars_fem_studies = "Stars2">>
<<else>>
<<set _classStars_fem_studies = "Stars3">>
<</if>>
/* HTML table */
<table class="stat_table">
<tr>
<td>''Art'' rating:</td>
<td><div @class='_classStars_art' @style='"--rating: " + _classRating_art + ";"'></div></td>
</tr>
<tr>
<td>''Sex Education'' rating:</td>
<td><div @class='_classStars_sex_ed' @style='"--rating: " + _classRating_sex_ed + ";"'></div></td>
</tr>
<tr>
<td>''Female Studies'' rating:</td>
<td><div @class='_classStars_fem_studies' @style='"--rating: " + _classRating_fem_studies + ";"'></div></td>
</tr>
<tr>
<td>''Nerd Studies'' rating:</td>
<td><div @class='_classStars_nerd' @style='"--rating: " + _classRating_nerd + ";"'></div></td>
</tr>
</table>
<br class="clear">
</div>
</div>
<br class="clear">
<br class="clear">
/* Kamasutra sex positions */
<div class="expand more">
<h2>Kamasutra</h2>
<div class="expandContent">
<<if $test>>
<<for _k to 0; _k < setup.kamasutra.length; _k++>>
/* Check if the player knows the position */
<<set _current = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
<<if _current == -1>>
<<capture _k>>
<<link `"+ " + setup.kamasutra[_k].name + " "`>>
<<pocket `"kamasutra+" + setup.kamasutra[_k].id`>>
<<runPopup "player">>
<</link>>
<</capture>>
<</if>>
<</for>>
<br class="clear">
<</if>>
/* List the sex categories */
<<for _sc to 0; _sc < setup.sexCat.length; _sc++>>
<<set _sexCatStart to 0>>
<<set _sexCatEnd to 0>>
/* List the sex positions */
<<for _k to 0; _k < setup.kamasutra.length; _k++>>
/* Check if the player knows the position */
<<set _current = $player.kamasutra.findIndex(x => x.id === setup.kamasutra[_k].id)>>
<<set _curData = $player.kamasutra.find(x => x.id === setup.kamasutra[_k].id)>>
<<if _current != -1 && _curData.known == 1 && setup.kamasutra[_k].sexCat.indexOf(setup.sexCat[_sc].id) != -1>>
/* Print the category name */
<<if _sexCatStart == 0>>
<h3><<print setup.sexCat[_sc].name>></h3>
<<set _sexCatStart to 1>>
<<set _sexCatEnd to 1>>
<</if>>
/* Print the button */
<<btnSex setup.kamasutra[_k].id setup.kamasutra[_k].yields null null "inactive stats">>
<</if>>
<</for>>
<<if _sexCatEnd == 1>>
<br class="clear">
<</if>>
<</for>>
</div>
</div>
<br class="clear">
<br class="clear"><<chunks>>
/* Unique NPCs in location */
<<wrapper "ashIntro=2">>
<p class="locDesc">You hear wild screams and moans of $ash.name and his lady coming from the back room.</p>
<<dial "ash" "Oh yea, baby girl!">>
<<dial "gal" "Shut the fuck up!">>
<p class="locDesc">Better leave them alone...</p>
<<wrapelse "open; $ash.hide!=1; period!=Afternoon; ash">>
<p class="locDesc">''$ash.name'' is here! He looks at you with a mixture of "why don't you have tits" and "I have a chainsaw with your name on it".</p>
<<media `"locations/" + $curLoc + "/ash_angry.mp4"` "character">>
<<wrapelse "open; $ash.hide!=1; period=Afternoon; ash">>
<p class="locDesc">''$ash.name'' is here! He's leaning against the register, talking to a hot girl doing her groceries.</p>
<<media `"locations/" + $curLoc + "/ash_nice.mp4"` "character">>
<<dial "ash" "...and then I dragged the kid from the flames... He didn't make it, but it was pretty brave of me.">>
<</wrapper>>
<<menu>>
/* Quests */
<<btn "kellyPower" "Buy the sunglasses" "kellyPower=5; $kellyPower_task+sunglasses" "store quest">>
<<btn $curLoc "Buy the trash bags" "daphFixGarden=2; cash=15; cash-15; trash_bags+; !trash_bags" "store quest">>
<<btn $curLoc "Buy the paint" "daphFixGarden=6; cash=30; cash-30; paint+; !paint" "store quest">>
<<btn $curLoc "Buy the plunger" "alexaPool=4; cash=30; cash-30; plunger+; !plunger" "store quest">>
<<btn $curLoc "Buy the drill" "daphBdsm=4; cash=30; cash-30; drill+; !drill" "store quest">>
<<btn "kellyIntro" "Buy cleaning stuff" "kellyIntro=1; cash=100; cash-100" "store quest">>
<<btn "kellyPower" "Buy the envelope" "kellyPower=3" "quest">>
<<wrapper "ashIntro!=0; ashIntro!=DONE">>
<<btn "ashIntro" "Approach $ash.name" "ash; ashIntro=1" "quick quest">>
<<btn "ashIntro" "Peek at $ash.name and Roxy" "ash; ashIntro=2; $ashIntro_peek!=2; $ashIntro_peek+" "quick quest">>
<<btn "ashIntro" "Steal something" "ash; ashIntro=2; $ashIntro_steal!=2; $ashIntro_steal+" "store quest">>
<<btn "ashIntro" "Browse $ash.name's porn mags" "ash; ashIntro=2; $ashIntro_browse+" "quick quest">>
<</wrapper>>
<<wrapper "miaIntro!=0; miaIntro!=DONE">>
<<btn "miaIntro" "Talk to $mia.name" "miaIntro=1; mia; counter:miaDebuff=0" "quest">>
<<btn "miaIntro" "Help $mia.name carry boxes" "miaIntro=2; mia; period=Morning" "quest">>
<<btn "miaIntro" "Help $mia.name clean" "miaIntro=3; mia; period=Afternoon" "quest">>
<<btn "miaIntro" "Take $mia.name out for a walk" "miaIntro=4; mia; period=Afternoon" "quest">>
<</wrapper>>
<<wrapper "miaDate!=0; miaDate!=DONE">>
<<btn "miaDate" "Offer $mia.name a date" "miaDate=1; mia; counter:miaAsked=null" "quest">>
<<btn "miaDate" "Take $mia.name on a date" "cash=100; cash-100; miaDate=3; mia; period=Afternoon; day=Friday" "quest">>
<</wrapper>>
<<btn "daphMakeKey" "Ask $mia.name about Play-doh" "daphMakeKey=1; mia" "quest">>
<<btn "karmaCum" "Talk with $mia.name about the book" "karmaCum=3; mia" "quest">>
<<btn $curLoc "Buy groceries" "!groceries; groceries+; quest:daphHelp=4; cash=40; cash-40" "store quest">>
/* Activities and chores */
<<btn $curLoc "Buy beer" "beer+; cash=20; cash-20" "store">>
<<btn $curLoc "Buy viagra" "viagra+; cash=30; cash-30" "store">>
<<btn $curLoc "Buy aphrodisiac" "aphro+; cash=50; cash-50" "store">>
<<btn $curLoc "Buy sleeping pills" "roofies+; cash=50; cash-50" "store">>
<<btn $curLoc "Buy groceries" "groceries+; quest:daphHelp!=4; cash=40; cash-40" "store">>
<<btn $curLoc "Buy a cucumber" "cash=5; cash-5; cucumber+" "store">>
<<wrapper "miaIntro=DONE">>
<<btn "localStoreBoxes" "Help $mia.name carry boxes" "mia; mia.dom+2; period=Morning" "activ">> /*[[localStoreBoxes]]*/
<<btn "localStoreClean" "Help $mia.name clean" "mia; mia.love+2; period=Afternoon" "activ">> /*[[localStoreClean]]*/
<</wrapper>>
<<wrapper "miaDate=DONE">>
<<btn "localStoreWalk" "Take $mia.name for a walk" "mia; period=Afternoon" "activ">> /*[[localStoreWalk]]*/
<<btn "localStoreDate" "Take $mia.name on a date" "cash=100; cash-100; mia; period=Afternoon; day=Friday" "activ">> /*[[localStoreDate]]*/
<</wrapper>>
/* Relations */
<<btn "talk" "Chat with $mia.name" "mia; $char+mia" "chat relation">>
<<btn "flirt" "Flirt with $mia.name" "mia; mia.status=3; $char+mia" "flirt relation">>
/* Exit */
<<btn $curLocParent "Go out" "$questMode!=ashIntro" "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Relations */
<<btn "talk" "Chat with $bridgette.name" "bridgette; $char+bridgette" "chat relation">>
<<btn "flirt" "Flirt with $bridgette.name" "bridgette; bridgette.status=3; bridgette.status!=5; $char+bridgette" "flirt relation">>
<<btn "sex" "Fuck $bridgette.name" "bridgette; bridgette.status=5; $char+bridgette" "sex relation">>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
/* Reset $hookers array */
<<set $hookers = []>>
<<menu>>
/* Quests */
<<btn "parkDealer" "Buy some weed" "alexaPool=5; period=nighthours" "quest store">>
<<btn "kellyPower" "Meet with Sister $kelly.name" "kellyPower=5; day=sunday; period=sunset; $kellyPower_task+park" "quest">>
<<btn "daphMakeKey" "Search for a stick" "daphMakeKey=3; $daphMakeKey_stick+; $daphMakeKey_stick=null" "quest">>
<<wrapper "roseIntro!=0; roseIntro!=DONE">>
<<btn "roseIntro" "Get closer to the field" "roseIntro=1" "quest store">>
<<btn "roseIntro" "Look for a jogger" "roseIntro=4" "quest">>
<<btn "roseIntro" "Play footie" "roseIntro=5" "quest">>
<</wrapper>>
<<wrapper "alexa">>
<<btn "alexaIntro" "Talk with $alexa.name" "quest:alexaIntro=1" "quest">>
<<btn "alexaIntro" "Talk with $alexa.name about tutoring" "quest:alexaIntro=5" "quest">>
<</wrapper>>
<<btn "xxxmas" "Sit on the bench and cry" "xxxmas=5" "quest">>
<<btn "halloween" "Hide from Jason" "halloween=2" "quest quick">>
<<btn "bridExo" "Buy some weed" "bridExo=5; period=nighthours" "quest store">>
<<btn "bridExo" "Look for blueberries" `"bridExo=7; counter:bridExo" + $curLoc + "Berries-1"` "quest">>
/* Activities and chores */
<<btn "parkTrouble" "Look for trouble" "daphMakeKey=DONE; day=weekend; dom+3" "activ">> /*[[parkTrouble]]*/
<<btn "parkRun" "Go for a run" "dom+3" "activ">> /*[[parkRun]]*/
<<btn "parkTan" "Lie in the sun" "effect:tan+; love+2; period=!evening; period=!night" "activ">> /*[[parkTan]]*/
<<btn "parkWalk" "Go for a walk" "love+1" "activ">> /*[[parkWalk]]*/
<<btn "parkHooker" "Find a hooker" "!ballsSmash; $hookers+null" "activ">> /*[[parkHooker]]*/
<<btn "parkDealer" "Buy some drugs" "alexaPool=DONE; bridExo!=5; period=nighthours" "store">> /*[[parkDealer]]*/
<<btn "parkYogaRose" "Yoga with $rose.name" "rose; day=workdays; rose.love+2; roseIntro=DONE; $roseAngry=0; focus+" "activ">> /*[[parkYogaRose]]*/
<<btn "parkFootieRose" "Footie with $rose.name" "rose; day=weekend; roseIntro=DONE; $roseAngry=0" "activ">> /*[[parkFootieRose]]*/
<<btn "parkSearch" "Search the park" null "activ">> /*[[parkSearch]]*/
/* Relations */
<<btn "talk" "Chat with $rose.name" "rose; $roseAngry=0; $char+rose" "chat relation">>
<<btn "talk" "Chat with $alexa.name" "alexa; !dudeAlexa; $char+alexa" "chat relation">>
<<btn "flirt" "Flirt with $rose.name" "rose; $roseAngry=0; rose.status=3; $char+rose" "flirt relation">>
<<btn "flirt" "Flirt with $alexa.name" "alexa; !dudeAlexa; !daphne; alexa.status=3; $char+alexa" "flirt relation">>
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Locations */
<<btnImg "marketSexShop">> /*[[marketSexShop]]*/
<<btnImg "marketStuff">> /*[[marketStuff]]*/
<<btnImg "marketClothing">> /*[[marketClothing]]*/
<<btnImg "marketToilet">> /*[[marketToilet]]*/
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<<menu>>
/* Locations */
<<btnImg "cityClubDance">> /*[[cityClubDance]]*/
<<btnImg "cityClubToilet">> /*[[cityClubToilet]]*/
<<btnImg "cityClubBar">> /*[[cityClubBar]]*/
<<btnImg "cityClubVip">> /*[[cityClubVip]]*/
/* Exit */
<<btn $curLocParent "Go out" null "exit">>
<</chunks>><<chunks>>
<big class="center fi0">You start running down the park path...</big>
<p class="center fi1">First couple steps come easy...</p>
<p class="sml center fi2">And then...</p>
<<media `"activities/run/" + $player.lvl + ".mp4"` "si3">>
<<if $player.lvl <= 0>>
<<dial "player" "//Call the bambulance...//" "si4">>
<<elseif $player.lvl <= 1>>
<<dial "player" "//If you see me running, you need to start running too, because for sure something is chasing me...//" "si4">>
<<elseif $player.lvl == 2>>
<<dial "player" "//That awkward moment when you wear Nike, but you just can't do it...//" "si4">>
<<elseif $player.lvl <= 3>>
<<dial "player" "//♫ His knees... are sweaty... vomit... on mom... spaghetti... never let it go, go... nanana... ♬//" "si4">>
<<elseif $player.lvl <= 4>>
<<dial "player" "//This is my yoga.//" "si4">>
<<elseif $player.lvl <= 5>>
<<dial "player" "//Adrieeeeennnnn!//" "si4">>
<</if>>
<<sideDial>>
<<btn null null null "si5">>
<</chunks>><<chunks>>
<big class="center fi0">You lie on the grass...</big>
<p class="center fi1">And take off your t-shirt...</p>
<<media `"activities/tan/" + $player.lvl + ".mp4"` "si2">>
<<if $player.lvl <= 0>>
<<dial "player" "//The sun... it's... it's killing me...//" "si3">>
<<elseif $player.lvl <= 1>>
<<dial "player" "//I noticed that if I sunbath in the shadow I actually don't need sunscreen!//" "si3">>
<<elseif $player.lvl == 2>>
<<dial "player" "//I feel like a cookie in the furnace... hot, sexy, brown cookie...//" "si3">>
<<elseif $player.lvl <= 3>>
<<dial "player" "//♫ Summer, summer, summertime... mhm... something something something mhm mhm mhm... ♬//" "si3">>
<<elseif $player.lvl <= 4>>
<<dial "player" "//I love LA!//" "si3">>
<<else>>
<<dial "player" "//I am the sun!//" "si3">>
<</if>>
<<sideDial>>
<<btn null null null "si4">>
<</chunks>><<chunks>>
<big class="center fi0">You take a walk in the park.</big>
<p class="center fi1">Your mind wanders...</p>
<<media `"activities/walk/" + $player.lvl + ".mp4"` "si2">>
<<if $player.lvl <= 0>>
<<dial "player" "//I patented a new way of walking. You should try it, it's like going vegan with your legs!//" "si3">>
<<elseif $player.lvl <= 1>>
<<dial "player" "//I'm done. Carry me.//" "si3">>
<<elseif $player.lvl == 2>>
<<dial "player" "//Yeah, it might look like everything is fine on the surface, but deep down inside one of my shoes, my sock is slightly sliding off...//" "si3">>
<<elseif $player.lvl <= 3>>
<<dial "player" "//♫ Walking on sunshine... wooohooo... and... smthng-smthng... good! ♬//" "si3">>
<<elseif $player.lvl <= 4>>
<<dial "player" "//I just stand still. It's the universe that moves around me.//" "si3">>
<<elseif $player.lvl <= 5>>
<<dial "player" "//Wherever you go, whatever you do - fuckin' own it!//" "si3">>
<</if>>
<<sideDial>>
<<btn null null null "si4">>
<</chunks>>/* parkHooker */
/* Check if player got caught */
<<if setup.minRandSml <= $curRand>>
<<set $caught = 1>>
<</if>>
<<chunks>>
/* Reset current hooker */
<<set $curHooker = null>>
/* Check if the player is back in the location after hooker negotiation */
<<if !$hookers || $hookers.length == 0>>
<<set _hookers_new = 1>>
<<set $hookers = []>>
<<else>>
<<set _hookers_new = null>>
<</if>>
/* Generate hookers */
<<if $minRand <= $curRand || !_hookers_new>>
<<if _hookers_new>>
<<set _prostitutes = ["prostitute_1", "prostitute_2", "prostitute_3", "prostitute_4", "prostitute_5", "prostitute_6"].shuffle()>>
<<set $hookers = clone(_prostitutes)>>
<<else>>
<<set _prostitutes = clone($hookers)>>
<</if>>
<<set _hooker1 = State.getVar('$' + _prostitutes[0])>>
<<if 8 <= $curRand || !_hookers_new>>
<<set _hooker2 = State.getVar('$' + _prostitutes[1])>>
<<elseif 9 == $curRand || !_hookers_new>>
<<set _hooker3 = State.getVar('$' + _prostitutes[2])>>
<</if>>
<</if>>
/* Set descriptions */
<<set _hookerHotness = ["Uhhh... Man... When it comes to beauty... Honestly - you can do better. The good news is though, she's probably pretty cheap. Your call.", "Well, she's not very pretty, but maybe she knows how to suck cock? The truth is though - you can do better.", "She's kinda ok, right? I wouldn't throw her out of bed!", "Well, well, well. This one is pretty! How a pretty girl like that ended up working in the park?!", "Fuck. Me. Dude, you found an unicorn among the street workers. This girl is damn pretty!"]>>
<<set _hookerDesc = ["smiles to you", "makes a fuck-me face", "looks at you while smoking a cig", "is wiping cum out of her face", "smiles to you, seductively", "bites her lip"]>>
/* Start HTML */
/* We display yields for skipping */
<<yields>>
<<if _hookers_new>>
<big class="center fi0">You walk to a secluded part of the park...</big>
<p class="center fi1">The road is marked by used condoms...</p>
<p class="center sml fi2">And finally...</p>
<<else>>
<big class="center fi0">You go back to where the hookers gather...</big>
<</if>>
<div class="si3">
<<if _hooker1>>
<<media `"characters/" + _hooker1.id + "/portrait_big.jpg"`>>
<big>''_hooker1.name'' <<print _hookerDesc.random()>>.</big>
<p><<print _hookerHotness[(_hooker1.hotness - 1)]>></p>
<<if _hooker2>>
<<media `"characters/" + _hooker2.id + "/portrait_big.jpg"`>>
<big>''_hooker2.name'' <<print _hookerDesc.random()>>.</big>
<p><<print _hookerHotness[(_hooker2.hotness - 1)]>></p>
<</if>>
<<if _hooker3>>
<<media `"characters/" + _hooker3.id + "/portrait_big.jpg"`>>
<big>''_hooker3.name'' <<print _hookerDesc.random()>>.</big>
<p><<print _hookerHotness[(_hooker3.hotness - 1)]>></p>
<</if>>
<<if _hooker2>><<menu null null "prostitutes">><</if>>
<<btn "#approach" `"Approach ''" + _hooker1.name + "''"` `"$curHooker+"+_hooker1.id` "action">>
<<if _hooker2>><<btn "#approach" `"Approach ''" + _hooker2.name + "''"` `"$curHooker+"+_hooker2.id` "action">><</if>>
<<if _hooker3>><<btn "#approach" `"Approach ''" + _hooker3.name + "''"` `"$curHooker+"+_hooker3.id` "action">><</if>>
<<btn null "Changed my mind" null "action skip">>
<<if $supporter>>
<<btn $curPas "Reroll the hookers <strong class='badgeBig earlyAccess'>Fap Mode</strong>" "love=5; love-5; dom=5; dom-5; $hookers+null" "action valueShow">>
<<else>>
<<btn null "Reroll the hookers <strong class='badgeBig earlyAccess'>Fap Mode</strong>" null "action disabled">>
<</if>>
<<else>>
<<media "activities/prostitutes/park/location_empty.jpg">>
<big>There's no one here, bud.</big>
<<dial "player" "//Shiiit.//">>
<p>Well, at least you had a nice walk. Come back some other time.</p>
<<menu>>
<<btn null "Damn it!" null "action skip">>
<<if $supporter>>
<<btn $curPas "Reroll the hookers <strong class='badgeBig earlyAccess'>Fap Mode</strong>" "love=5; love-5; dom=5; dom-5; $hookers+null" "action valueShow">>
<<else>>
<<btn null "Reroll the hookers <strong class='badgeBig earlyAccess'>Fap Mode</strong>" null "action disabled">>
<</if>>
<</if>>
</div>
<<chunk null "#approach">>
<<delayer>>
<<set $curHooker = State.getVar('$' + $curHooker)>>
<big>You approach $curHooker.name.</big>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_intro.mp4"`>>
<<dial `$curHooker.id` "Hey, what's up baby? You're looking for a good time?">>
<<if $player.lvl <= 2>>
<<dial "player" "//Uhmmm... What should I say?!//">>
<p>I dunno. You approached her.</p>
<<dial "player" "//You're supposed to be my wingman, right?!//">>
<big>God damn.</big>
<p>Dude. This a whore. Say whatever you want, it doesn't matter. The best you can do is ask her the price.</p>
<<dial "player" "//Sheesh, chill out... I'm still learning this!// So... you know... how much is... uhmm... your service?">>
<<elseif $player.lvl <= 4>>
<<dial "player" "Yeah... how much?">>
<<else>>
<big>You look her in the eyes.</big>
<<dial "player" "Maybe.">>
<</if>>
<big>She sizes you up.</big>
<<if $curHooker.hotness <= 1>>
<<set _hookerPriceArr = [10, 15, 20, 25, 30, 35]>>
<<set _hookerPrice = _hookerPriceArr[$player.lvl]>>
<<set _hookerPriceHaggle = _hookerPrice + [-1, 1].random()>>
<<elseif $curHooker.hotness <= 2>>
<<set _hookerPriceArr = [20, 25, 30, 35, 40, 45]>>
<<set _hookerPrice = _hookerPriceArr[$player.lvl]>>
<<set _hookerPriceHaggle = _hookerPrice + [-10, -5, 1].random()>>
<<elseif $curHooker.hotness <= 3>>
<<set _hookerPriceArr = [30, 40, 50, 60, 70, 80]>>
<<set _hookerPrice = _hookerPriceArr[$player.lvl]>>
<<set _hookerPriceHaggle = _hookerPrice + [-30, -20, -10, 1].random()>>
<<elseif $curHooker.hotness <= 4>>
<<set _hookerPriceArr = [50, 60, 70, 80, 90, 100]>>
<<set _hookerPrice = _hookerPriceArr[$player.lvl]>>
<<set _hookerPriceHaggle = _hookerPrice + [-60, -25, -10, -5, 1].random()>>
<<elseif $curHooker.hotness >= 5>>
<<set _hookerPriceArr = [60, 80, 100, 120, 140, 160]>>
<<set _hookerPrice = _hookerPriceArr[$player.lvl]>>
<<set _hookerPriceHaggle = _hookerPrice + [-150, -150, -100, -50, -50, -20, 1].random()>>
<</if>>
<<if _hookerPriceHaggle <= 0>>
<<set _hookerScene = "#hooker_haggle_free">>
<<elseif _hookerPriceHaggle >= _hookerPrice>>
<<set _hookerScene = "#hooker_haggle_bad">>
<<else>>
<<set _hookerScene = "#hooker_haggle_ok">>
<</if>>
<<menu null null "wildcard single">>
<<btn null "Roll the dice!" null "wildcard">>
<</delayer>>
<<chunk>>
<<delayer>>
<<if $curHooker.id == "prostitute_5">>
<<dial `$curHooker.id` `"For " + _hookerPrice + " I will blow you."`>>
<<dial "player" "Just a blowjob? What about the rest?">>
<<dial `$curHooker.id` "Who do you think I am?! I don't fuck in the parks. So you want that blowjob or not, baby?">>
<<elseif $curHooker.id == "prostitute_6">>
<<dial `$curHooker.id` `"For " + _hookerPrice + " I will take you to a nice place close by and take your dick to heaven."`>>
<p>Ohh, she has a place?</p>
<big>That's an upgrade!</big>
<<else>>
<<dial `$curHooker.id` `"For " + _hookerPrice + " bucks I will take your dick to heaven."`>>
<</if>>
<<if $curHooker.id == "prostitute_1">>
<<media "take_it_or_leave_it.mp4">>
<<else>>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_thinking.mp4"`>>
<</if>>
<<menu>>
<<btn "#hooker_pay" "Pay her" `"love+2; cash=" + _hookerPrice + "; cash-" + _hookerPrice` "action">>
<<btn "#hooker_haggle" `_hookerPrice + "? That's way too much!"` "dom+2" "dialog">>
<<btn "parkHooker" "Not interested." null "dialog">>
<</delayer>>
<<chunk null "#hooker_haggle">>
<<delayer>>
<big>Her eyes get sad.</big>
<<if $curHooker.id == "prostitute_1">>
<<media "sad.mp4">>
<<else>>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_haggle.mp4"`>>
<</if>>
<<dial `$curHooker.id` `"Look at me, baby... Don't you think I'm worth " + _hookerPrice + " bucks...?"`>>
<big>Don't let her play this game.</big>
<p>Just say you changed your mind about the whole thing and start walking away.</p>
<<dial "player" "Sorry, I have to go!">>
<big>The hooker immediately changes her approach.</big>
<<dial `$curHooker.id` "Hey, baby, don't be like this! I'm so horny... Don't you wanna be my friend?">>
<<dial "player" "Oh yeah... So... what's the price for friends?">>
<big>Nice.</big>
<p>She sizes you up one more time.</p>
<<dial `$curHooker.id` "Well, for friends...">>
<<menu null null "wildcard single">>
<<btn _hookerScene "Roll the dice!" null "wildcard">>
<</delayer>>
<<chunk null "#hooker_haggle_ok">>
<<delayer>>
<big>She smiles.</big>
<<dial `$curHooker.id` `"You're kind of cute so... how bout' " + _hookerPriceHaggle + " bucks...?"`>>
<<media "final_offer.mp4">>
<p>You can see there's no point in haggling any further. That's as low as she will go.</p>
<big>Decision time.</big>
<<menu>>
<<btn "#hooker_pay" "Pay her" `"love+2; cash=" + _hookerPriceHaggle + "; cash-" + _hookerPriceHaggle` "action">>
<<btn "parkHooker" "Not interested." null "dialog">>
<</delayer>>
<<chunk null "#hooker_haggle_free">>
<<delayer>>
<big>She smiles.</big>
<<dial `$curHooker.id` "You know what... You're really cute... I'm gonna do you for free.">>
<<dial "player" "Free?! Fuck yeah!">>
<big>God damn.</big>
<p>Park whore giving a freebie? That's new!</p>
<<dial `$curHooker.id` "Now let's get to work...!">>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_ok.mp4"`>>
<</delayer>>
<<btn "#hooker_sex">>
<<chunk null "#hooker_haggle_bad">>
<<delayer>>
<<dial `$curHooker.id` "...there's a special price, bitch.">>
<big>She pulls out a knife.</big>
<<media "knife.mp4">>
<<dial "player" "//Oh fuck.//">>
<big>Oh fuck indeed.</big>
<<dial `$curHooker.id` "Pay me 100 bucks or I'm gonna fuck you up.">>
<p>You look at her, scared as fuck.</p>
<big>She smiles.</big>
<<dial `$curHooker.id` "Don't worry, baby. If you pay I will still suck your dick. I'm running an honest business here! So... Erm... Pay up, baby, or... die, bitch!!!">>
<p>Well, I guess... at least you come out with a blowjob.</p>
<</delayer>>
<<menu>>
<<btn "#hooker_pay" "Pay up!" "love+2; cash=100; cash-100" "action">>
<<btn "#hooker_punch" "Punch her!" "dom+2" "action">>
<<chunk null "#hooker_punch">>
<<delayer>>
<p>Normally you're against hitting a woman, but in this case...</p>
<big>...you throw your best punch.</big>
<<media "punch.mp4">>
<p>But $curHooker.name wasn't born yesterday. She sees your fist and dodges to avoid it...</p>
<<if $player.lvl <= 1>>
<<set _hookerFight = ["#hooker_victory", "#hooker_fail", "#hooker_fail"].random()>>
<<elseif $player.lvl == 2>>
<<set _hookerFight = ["#hooker_victory", "#hooker_fail"].random()>>
<<elseif $player.lvl <= 3>>
<<set _hookerFight = ["#hooker_victory", "#hooker_victory", "#hooker_fail"].random()>>
<<elseif $player.lvl >= 4>>
<<set _hookerFight = "#hooker_victory">>
<</if>>
<<menu null null "wildcard single">>
<<btn _hookerFight "Roll the dice!" null "wildcard">>
<</delayer>>
<<chunk null "#hooker_victory">>
<big>Your punch knocks her out cold.</big>
<<media "knock_out.mp4">>
<<dial "player" "//Woow!//">>
<big>Yup.</big>
<<dial "player" "//I floored her!//">>
<p>Yes, you floored a woman, well done.</p>
<big>I think that solves it...</big>
<p>And now better get the fuck out!</p>
<p>...before her whore friends gonna decide to take a revenge.</p>
<<dial "player" "//Yup!//">>
<big>You walk towards the exit of the park.</big>
<<btn $curLocParent null "dom+5" "yieldsHide">>
<<chunk null "#hooker_fail">>
<<delayer>>
<big>The hooker dodges - you miss.</big>
<<dial "player" "//I miss?!//">>
<p>You know you're fucked the moment when she says...</p>
<<dial `$curHooker.id` "You're fucked.">>
<p>She takes a swing with her foot and...</p>
<</delayer>>
<<btn>>
<<chunk>>
<<delayer>>
<big>She kicks you in the nuts.</big>
<<media "ball_kick2.mp4">>
<big>Shiiiiiiiiiiiiit.</big>
<p>You drop on the ground in convulsions.</p>
<<dial `$curHooker.id` "I would totally blow you, but after that shit... You're lucky I didn't cut your dick off.">>
<</delayer>>
<big>She leans towards you and takes your wallet.</big>
<<delayer>>
/* Randomize the cash to lose */
<<if $player.lvl <= 1>>
<<set _cashLose = [20, 30, 40, 50].random()>>
<<elseif $player.lvl == 2>>
<<set _cashLose = [20, 30, 40, 60, 80].random()>>
<<elseif $player.lvl == 3>>
<<set _cashLose = [30, 40, 60, 80, 100].random()>>
<<elseif $player.lvl == 4>>
<<set _cashLose = [40, 60, 80, 100, 150].random()>>
<<elseif $player.lvl >= 5>>
<<set _cashLose = [50, 80, 100, 150, 200].random()>>
<</if>>
<<yields `"cash-" + _cashLose`>>
<</delayer>>
<<dial "player" "//Fuuuuuuuck.....//">>
<p>Say goodbye to your balls for at least couple days, bud. I wouldn't count on any sex, and wanking is out of the question. This is going to be hard, but you'll come back stronger...</p>
<p><small>...and hopefully with better ideas than throwing a punch at a hooker with a knife.</small></p>
<<btn $curLoc "Die a little" "time+3; ballsSmash+" "action">>
<<chunk null "#hooker_pay">>
<<delayer>>
<big>She takes the money and hides between her tits.</big>
<<dial `$curHooker.id` "Now let's get to work...!">>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_ok.mp4"`>>
<<if $curHooker.id == "prostitute_6">>
<big>She takes you to her place just next to the park.</big>
<p>It's pretty good for a park hooker. I have to say, I'm surprised! Great cost to value ratio!</p>
<</if>>
<</delayer>>
<<if $caught>>
<<btn "#caught">>
<<else>>
<<btn "#hooker_sex">>
<</if>>
<<chunk null "#hooker_sex">>
<<delayer>>
<big>$curHooker.name starts working your dick.</big>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_sex_1.mp4"`>>
<<dial "player" "Oh yeahh... suck it">>
<<dial `$curHooker.id` "Mhmm...">>
<p>You can feel the blood rushing to your cock. Pleasure is slowly building up.</p>
<</delayer>>
<<btn>>
<<chunk>>
<<delayer>>
<big>She moves her head up and down your shaft.</big>
<p>Her lips wrap so tightly around your cock that it feels like you'd put it into a vacuum cleaner.</p>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_sex_2.mp4"`>>
<<dial "player" "Yes... like that... yes...">>
<<dial `$curHooker.id` "Gobble... Gobble... Gobble...">>
<<if $curHooker.id != "prostitute_5">>
<p>But even though her mouth feels great.</p>
<big>...it's time for a change.</big>
<<dial "player" "I want your pussy now!">>
<p>She pulls out your dick from her mouth, and drops her panties.</p>
<</if>>
<</delayer>>
<<btn>>
<<chunk>>
<<delayer>>
<<if $curHooker.id == "prostitute_5">>
<big>Saliva drips from her mouth...</big>
<<else>>
<big>You turn $curHooker.name's ass towards you...</big>
<p>As you go into her wet pussy, you can feel her warmth around your stiff cock.</p>
<</if>>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_sex_3.mp4"`>>
<<if $curHooker.id == "prostitute_5">>
<<dial "player" "Yeah... blow me, whore... Blow my dick!">>
<<dial `$curHooker.id` "Gobble-gobble-gobble...">>
<<else>>
<<dial `$curHooker.id` "Uhhhh.... that dick feels great...">>
<<dial "player" "Same for your pussy baby!">>
<<dial `$curHooker.id` "Fuck that pussy... I'm your little whore...">>
<</if>>
<</delayer>>
<<btn>>
<<chunk>>
<<delayer>>
<<if $curHooker.id == "prostitute_5">>
<big>She speeds up.</big>
<<else>>
<big>Your dick penetrates $curHooker.name's wet cunt like a sledgehammer.</big>
<</if>>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_sex_4.mp4"`>>
<<if $curHooker.id == "prostitute_5">>
<<dial "player" "Put it deeper... I wanna feel your throat!">>
<<dial `$curHooker.id` "Gobbhhhrrr...">>
<<dial "player" "Fuck yea... so tight!">>
<p>There's no doubt she's a true master at her craft. Your dick never was so shiny and clean. You could literally eat with it.</p>
<<else>>
<<dial `$curHooker.id` "Oh yea... like that...!">>
<<dial "player" "You like my dick?!">>
<<dial `$curHooker.id` "I fucking love your dick... Tell me I'm your whore...!">>
<<dial "player" "You're my dirty fucking whore!">>
<<dial `$curHooker.id` "Yesssssss...!">>
<</if>>
<</delayer>>
<<btn>>
<<chunk>>
<<delayer>>
<big>You feel the orgasm closing.</big>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_sex_5.mp4"`>>
<<if $curHooker.id == "prostitute_5">>
<p>And then...</p>
<big>....$curHooker.name pulls out your dick from her mouth.</big>
<<dial `$curHooker.id` "Hey, wait...">>
<<dial "player" "What!? Why?!">>
<<dial `$curHooker.id` "Don't you wanna fuck me...?">>
<<dial "player" "Yeah, but you said you don't fuck in the parks!">>
<<dial `$curHooker.id` "I don't... But I know a good place where you can fuck me... It would cost you another 100 bucks.">>
<big>100 bucks?! She's a cunning bitch!</big>
<p>It's up to you, but tbh I'd say she's worth it, man. Just look at this pretty face... and tits... and ass.</p>
<big>You need to make a decision.</big>
<<menu>>
<<btn "sex" "Go with her and fuck her brains out" `"cash=100; cash-100; $char+" + $curHooker.id` "sex action">>
<<btn "#hooker_cum" "Cum now" "dom+3" "yieldsHide">>
<<else>>
<<dial `$curHooker.id` "YES! YES! FUCK ME!">>
<<dial "player" "Tell me you're my whore!">>
<<dial `$curHooker.id` "I'm your whore! I'm your fucking whore!!!">>
<p>Couple more seconds and you're gonna explode.</p>
<big>You need to make a decision.</big>
<<menu>>
<<btn "sex" "Fuck her brains out" `"$char+" + $curHooker.id` "sex action">>
<<btn "#hooker_cum" "Cum now" "dom+3" "action yieldsHide">>
<</if>>
<</delayer>>
<<chunk null "#hooker_cum">>
<<delayer>>
<big>You feel hot thick cum shooting out of your stiff dick.</big>
<<dial "player" "Uhhhhhhhhhhhhhh...">>
<<dial `$curHooker.id` "Yeah, baby, cum for me...">>
<<media `"activities/prostitutes/park/" + $curHooker.id + "/" + $curHooker.id + "_cum.mp4"`>>
<p>As soon as you finish, she gets up and pulls her panties on.</p>
<<dial `$curHooker.id` "That was great, baby. You should drop by more often!">>
<</delayer>>
<big>She blows you a kiss and loses all interest.</big>
<<dial "player" "//Whoa... That was awesome...//">>
<p>I'm glad you enjoyed it, buddy.</p>
<big>Just remember to always wear a condom!</big>
<<btn $curLoc>>
<</chunks>>/* daphAlexSearch */
/* Create arrays with items (base items are findable many times, unique items can be found just once) */
<<set _searchItemsBase = ["dirty_panties+", "cash+2", "nothing", "speed"]>>
<<set _searchItemsUnique = ["dirty_panties+", "roofies+", "weed+", "weed+", "speed+", "speed+", "cash+5"]>>
/* Define found item */
<<searchLoc _searchItemsBase _searchItemsUnique>>
/* Set the button link so that it leads to next chunk for some items */
<<set _chunkLink = null>>
<<if _foundItem == "dirty_panties+" || _foundItem == "roofies+" || _foundItem == "weed+" || _foundItem == "speed+">>
<<set _chunkLink = "#more">>
<</if>>
/* Define if we also learn about kink */
<<set _chunkLinkKink = null>>
<<if $alexa.kinkKnown != 1>>
<<set _chunkLinkKink = "#moreKink">>
<</if>>
<<chunks>>
<p class="fi0 center">You check every corner of the room. Under the carpet, behind the cabinet, and inside the pillows. You even move some of the lighter furniture.</p>
<big class="fi2 center">And finally...</big>
<<media `"activities/search/daphAlex/" + _foundItemMedia` "si4">>
<big class="si5 center">_foundItemText</big>
<<btn _chunkLink null null "si6">>
<<chunk null "#more">>
<<if _foundItem == "dirty_panties+">>
<p>I'm personally not a huge lingerie guy (unless the girl is really fat, in which case it helps redirect my attention), but even I can't help a growing hard-on.</p>
<<dial "player" "//I'm sure she won't mind if...//">>
<p>You put it to your nose and give it a good slow sniff.</p>
<<media "sniffing.mp4">>
<<dial "player" "Mmmmm... Noice!">>
<<yields "sniffrush+" "dialog">>
<<elseif _foundItem == "roofies+">>
<<media `"activities/search/daphAlex/roofies.mp4"`>>
<<dial "player" "That might be useful!">>
<big>Hopefully not.</big>
<<elseif _foundItem == "weed+">>
<p>At first think it's just a bag of spices, but then you start to wonder...</p>
<<dial "player" "//Why would $alexa.name have a bag of spices hidden in her room...?//">>
<big>And then it hits you.</big>
<<media "activities/search/daphAlex/weed.mp4">>
<<elseif _foundItem == "speed+">>
<p>At first think it's just a bag of salt, but then you start to wonder...</p>
<<dial "player" "//Why would $alexa.name have a bag of salt hidden in her room...?//">>
<big>And then it hits you.</big>
<<media "activities/search/daphAlex/speed.mp4">>
<</if>>
<<btn _chunkLinkKink>>
<<chunk null "#moreKink">>
<big>But you also notice something else hid behind the bed...</big>
<<dial "player" "What the hell...">>
<<media "surprise.mp4">>
<p>You see a bunch of porn dvd's. And you notice something very specific about them...</p>
<<btn>>
<<chunk>>
<<media "activities/search/daphAlex/anal1.jpg">>
<<btn>>
<<chunk>>
<<media "activities/search/daphAlex/anal2.jpg">>
<<btn>>
<<chunk>>
<<media "activities/search/daphAlex/anal3.jpg">>
<<btn>>
<<chunk>>
<p>You realize something shocking.</p>
<<media "shock.mp4">>
<big>$alexa.name is into <<print setup.sexCat.find(obj => {return obj.id === $alexa.kink}).name>>!</big>
<<btn null null "alexa.info+kink">>
<</chunks>><<chunks>>
<p class="med fi0">You pull out your laptop and type in the address of your favorite meme site.</p>
<<media `"activities/memes/" + $player.traitShrt +"/" + $curRand + ".jpg"` "si2">>
<<if $player.trait == "satan">><<dial "player" "Ave Satan!" "fi2">>
<<elseif $player.trait == "toxic">><<dial "player" "Toxic masculinity memes for the win!" "fi3">>
<<elseif $player.trait == "bully">><<dial "player" "Wait a minute... ohhh, that's clever!" "fi3">>
<<elseif $player.trait == "jerk">><<dial "player" "Trollolol!" "fi2">>
<<elseif $player.trait == "nerd">><<dial "player" "Beam me up, Scotty!" "fi3">>
<<elseif $player.trait == "vegan">><<dial "player" "Triggered!" "fi3">>
<<elseif $player.trait == "hippie">><<dial "player" "I don't want to leave on this planet anymore." "fi3">>
<<elseif $player.trait == "messiah">><<dial "player" "Ha ha, I'm a meme god!" "fi3">>
<<elseif $player.trait == "alpha">><<dial "player" "It's funny because I say it's funny, and when I say it's funny - it instantly becomes a scientific fact." "fi3">>
<<else>><<dial "player" "It's funny and yet it makes me sad." "fi3">>
<</if>>
<<btn null null null "si5">>
<</chunks>><<chunks>>
/* Load movie data */
<<set _comedy = ["Spies Like Us", "Dazed and Confused", "Groundhog Day", "Monty Python and the Holy Grail", "Dr. Strangelove", "Blues Brothers", "Big Lebowski"].random()>>
<<set _horror = ["Re-animator", "Omen", "Evil Dead", "Invasion of the Body Snatchers", "The Exorcist", "Night of the Living Dead", "Big Meat Eater"].random()>>
<<set _porn = ["Deep Throat", "Lord of the cockrings", "Game of bones", "Edward Penishands", "Star Whores: Attack of the Silicone", "My Ass is Haunted", "Ass Odyssey (platinum anthology)", "Big Wet Asses 12"].random()>>
<<set _chosenCat = null>>
<p class="fi">You take a remote in your hand and flip couple channels. There are some things that grab your attention. Which one you prefer?</p>
<<media "activities/tv/tv.mp4" "fi1">>
<<dial "player" "I'm in a mood for..." "fi1">>
<<btn "#tvComedy" _comedy "love" "action fi2">>
<<btn "#tvHorror" _horror "dom" "action fi2">>
<<btn "#tvPorn" _porn "tvPass" "action fi2">>
<<chunk null "#tvComedy">>
<<delayer>>
<<set _chosenCat = "tvComedy">>
<</delayer>>
<<media "activities/tv/tvComedy.mp4">>
<<dial "player" "Ha ha, that's hilarious.">>
<p>Hilarious? Yeah, I guess it really is hilarious how you should be getting ass instead of sitting on one. And, don't get me wrong - I do believe it's a good idea to push some proper culture into your thick skull, not to mention the fact that "_comedy" is a fucking classic, obviously. But god damn it man, we need you to be out there...</p>
<big>...where the asses roam the land.</big>
<p>It's the only way, pal. The only fucking way.</p>
<<btn>>
<<chunk null "#tvHorror">>
<<delayer>>
<<set _chosenCat = "tvHorror">>
<</delayer>>
<<media "activities/tv/tvHorror.mp4">>
<<dial "player" "Oh fuck... Oh fuck... Oh fuck... No! Don't split up... What a bunch of idiots! Oh fuck! Oh fuck!! Oh fuck!!!">>
<p>Oh fuck indeed. I'll tell you a horror story, buddy. Get this - it's about a guy, who never had pussy. Never smelled pussy. Never even so much as seen a pussy. And you know what happened to this guy? You know what happend, $player.name boy?</p>
<big>He fucking died.</big>
<p>Don't be that guy, you hear me, boy? Go, out there, where the wild pussies grow. And get some. Get whole lotta pussy!</p>
<<btn>>
<<chunk null "#tvPorn">>
<<delayer>>
<<set _chosenCat = "tvPorn">>
<</delayer>>
<<media "activities/tv/tvPorn.jpg">>
<<dial "player" "This is not porn!">>
<big>Congrats, Sherloc. Now shut the fuck up.</big>
<p>Here's the thing. You like porn - I get it. I use it too. Those birds in that movies... I mean... I've seen some things, bud. Things some people wouldn't believe. Ass cracks on fire off the streets of Ohio. I watched GILFs covered in glitter and cum in the schoolgirl uniforms. But all those moments will be lost in search engines, like jizz in rain...</p>
<big>It's time to fuck something real!</big>
<<dial "player" "But I //really// wanted to watch some porn!">>
<p>Sigh... Ok, buddy, I know the feeling. And I'll allow it this once as a training. But seriously, we need you out there, or you'd be humping the tv screen all your fucking life.</p>
<<btn>>
<<chunk>>
<<media `"activities/tv/tvPorn" + random(1,5) + ".mp4"`>>
<p>Happy?</p>
<<dial "player" "Uhhhhh...">>
<p>Yeah, completely braindead, it figures... This dick takes so much blood to run, it leaves the guy practically on fumes. I can almost hear the screams of gray cells fighting for their lives. Not to mention it's one big vampire hazard - I'm pretty sure they can smell a hard-on from miles. Then again, those vampire ladies, they're always 10/10, so at least you'll get one unforgettable suck before you die <small>(or become a bug eating braindead ghoul)</small>. So I guess both work.</p>
<<btn>>
<</chunks>><<events "show">>
<<EVENT "randHigh">>
<<chunks>>
<big class="center fi0">You close your eyes...</big>
<p class="center fi1">And slowly drift away...</p>
<p class="sml center fi2">Into a wet dream...</p>
<<media `"activities/sleep/" + $player.traitShrt +"/" + $curRand + ".mp4"` "si3">>
<<if $player.trait == "satan">><<dial "player" "Oh, fuck it. If it's the bottom, then I might as well enjoy it. Here, little calamari, daddy looove the tentacles!" "fi4">>
<<elseif $player.trait == "toxic">><<dial "player" "What have I done to myself? I need to get back on the righteous path, or I'm doomed!" "fi4">>
<<elseif $player.trait == "bully">><<dial "player" "Sooo... Now I'm dreaming about vampires? Oh, whatever. Here, baby, suck the blood out of my dick." "fi4">>
<<elseif $player.trait == "jerk">><<dial "player" "Those dreams are becoming weirder and weirder. But I'm still onboard with this shit!" "fi4">>
<<elseif $player.trait == "nerd">><<dial "player" "Justice served, baby!" "fi4">>
<<elseif $player.trait == "vegan">><<dial "player" "I wonder if it's still domination, when you're being dominated by a cucumber?" "fi4">>
<<elseif $player.trait == "hippie">><<dial "player" "Take it for the mother Earth you whore!" "fi4">>
<<elseif $player.trait == "messiah">><<dial "player" "Good habits make me hard." "fi4">>
<<elseif $player.trait == "alpha">><<dial "player" "Ommmm...." "fi4">>
<<else>><<dial "player" "Oh yeah, baby! Give it to me!" "fi4">>
<</if>>
<<btn null null null "si5">>
<</chunks>>
<</events>><<chunks>>
<p class="fi">You approach the liquor cabinet and open it. There's plenty of colorful bottles inside with different liquids. You need to mix them up to create a proper drink.</p>
<<media "activities/drink/cabinet.mp4" "fi1">>
<<set _drinks to [
["#tasty", "Gin + Tonic + Lemon"],
["#tasty", "Tequila + Cointreau + Lemon"],
["#tasty", "Whisky + Cola + No morals"]
]>>
<<set _drinksWrong to [
["#fucked", "Gin + Vodka + Lemon"],
["#fucked", "Whisky + Cola + Lime"],
["#fucked", "Tequila + Cola + Lemon"],
["#fucked", "Gin + Cola + Lemon"],
["#fucked", "Vodka + Whisky + Gin"],
["#fucked", "Cola + Cointreau + Tequila"],
["#fucked", "Tequila + No morals + Cointreau"]
]>>
<<set _drinksPos to [0, 1, 2]>>
<<set _drinksRand = _drinksPos.random()>>
<<set _drinksWrongRand to random(0,6)>>
<<set _drinks[_drinksRand] = _drinksWrong[_drinksWrongRand]>>
<<set _drinksPos.splice(_drinksRand, 1)>>
<<set _drinksWrong.splice(_drinksWrongRand, 1)>>
<<set _drinksRand = _drinksPos.random()>>
<<set _drinksWrongRand to random(0,5)>>
<<set _drinks[_drinksRand] = _drinksWrong[_drinksWrongRand]>>
<<set _drinks = _drinks.shuffle()>>
<<menu "si2">>
<<btn _drinks[0][0] _drinks[0][1] null "si2">>
<<btn _drinks[1][0] _drinks[1][1] null "si2">>
<<btn _drinks[2][0] _drinks[2][1] null "si2">>
<<chunk null "#fucked">>
<big>You done fucked it up!</big>
<<media "activities/drink/drink_fucked.mp4">>
<p>If it tastes like shit, looks like shit, and quaks... you probably need some recipes.</p>
<<btn>>
<<chunk null "#tasty">>
<big>Drink responsibly! <small>(don't spill)</small></big>
<<media "activities/drink/drink_tasty.mp4">>
<p>Now that's what I call a tasty bewerage!</p>
<big>Good job, buddy!</big>
<<btn null null "drink+">>
<</chunks>><<chunks>>
<big class="fi0 center">You stand above a basket of dirty clothes.</big>
<p class="fi1 center">You open it and see a bunch of panties, bras, and dresses, entagled together. You can smell a strong smell of perfumes and sweat coming from inside.</p>
<<if $curLocChars.length == 0>>
<p class="fi2 center">You take a black lacy thong, put it up to your nose, and give it a nice sniff.</p>
<<dial "player" "Mmmm! Noice!" "fi3">>
<<pocket "sniffrush+">>
<<else>>
<<sideDial>>
<</if>>
<big class="fi4 center">You pack the clothes to the laundry machine.</big>
<<media "activities/chores/laundry.mp4" "si5">>
<<sideDial>>
<<btn null null null "si5">>
<</chunks>><<events "show">>
<<EVENT "daphne">>
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
<<set _shower = ["daphne_shower0_", "daphne_shower1_", "daphne_shower2_"].random()>>
/* Do HTML */
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $daphne.name is taking a shower.</big>
<<media `"activities/peek/daphBath/" + _shower + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can stay and watch, but if you get caught, $daphne.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Stay and watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love+1" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the crack to see better...</p>
<<media `"activities/peek/daphBath/" + _shower + "0.jpg"`>>
<big>Mother of god...</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<btn $caughtLink "Stay and watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>This woman could make a decent living by just recording her showers. I mean...</p>
<big>Tits to die for!</big>
<<media `"activities/peek/daphBath/" + _shower + "1.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+2" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name is covered in soap. Her tits are bouncing up and down, as she washes her legs.</p>
<<media `"activities/peek/daphBath/" + _shower + "2.jpg"`>>
<p>You feel your legs getting soft.</p>
<big>I blame boobs.</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+3" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name massages her tits like she knew you're watching. Honestly, they're clean already.</p>
<<media `"activities/peek/daphBath/" + _shower + "3.jpg"`>>
<p>By the way - why do they call it boob sweat, and not...</p>
<big>...humidittities?</big>
<<btn>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+4" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name left the best for the last. She lathered her thighs and ass until it's slippery with soap, and then... she pushes her fingers into her lovely snatch.</p>
<<media `"activities/peek/daphBath/" + _shower + "4.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>$daphne.name washes down the remaining soap and turns off the water.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket "jerkedoff+">>
<p>Meanwhile, $daphne.name washes down the remaining soap and turns off the water.</p>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<btn $curLoc "Move away" null "action">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "alexa">>
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
<<set _shower = ["alexa_shower0_"].random()>>
/* Do HTML */
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $alexa.name is taking a shower.</big>
<<media `"activities/peek/daphBath/" + _shower + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can stay and watch, but if you get caught, $alexa.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Stay and watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love+1" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the crack to see better...</p>
<<media `"activities/peek/daphBath/" + _shower + "0.jpg"`>>
<p>$alexa.name is undressing. And she's doing it in a way that makes the risk instantly worth it.</p>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<btn $caughtLink "Stay and watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$alexa.name lathers her body with soap and starts massaging her little tits and perky ass...</p>
<<media `"activities/peek/daphBath/" + _shower + "1.jpg"`>>
<big>She knows her assets!</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+2" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$alexa.name is covered in soap. Oh how you wish you'd be there with her...</p>
<<media `"activities/peek/daphBath/" + _shower + "2.jpg"`>>
<big>I feel you, dude!</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+3" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$alexa.name moves on to her pussy... Wait a minute, is she pissing in the shower?!</p>
<<media `"activities/peek/daphBath/" + _shower + "3.jpg"`>>
<big>Dirty girl!</big>
<<btn>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>><<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+4" "action">><</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$alexa.name left the best for the last. She lathered her thighs and ass until it's slippery with soap, runs her fingers between the buttcheeks, and... she puts one finger in her asshole.</p>
<<media `"activities/peek/daphBath/" + _shower + "4.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>$alexa.name washes down the remaining soap and turns off the water.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket "jerkedoff+">>
<p>Meanwhile, $alexa.name washes down the remaining soap and turns off the water.</p>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<btn $curLoc "Move away" null "action">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "while=nothing">>
<<chunks>>
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">Unfortunately - you don't see a thing.</big>
<<btn $curLoc "Move away" null "action si3">>
<</chunks>>
<</events>><<chunks>>
<big class="center fi0">You undress...</big>
<p class="center fi1">Walk into the shower cabin...</p>
<p class="sml center fi2">And start washing your body...</p>
<<media `"activities/shower/" + $player.lvl + ".mp4"` "si4">>
<<sideDial>>
<<btn null null "$playerShower+0; effect:clean+" "si5">>
<</chunks>>
<<if $lvlup>>
<<include "lvlup">>
<</if>><<events "show">>
<<EVENT "daphne; while=sex">>
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
<<set _activity = ["daphne_sex0_", "daphne_sex1_", "daphne_sex2_"].random()>>
/* HTML */
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $daphne.name is fucking with someone.</big>
<<media `"activities/peek/daphRoom/" + _activity + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can stay and watch, but if you get caught, $daphne.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Stay and watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love+1" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the crack to see better...</p>
<<media `"activities/peek/daphRoom/" + _activity + "0.jpg"`>>
<big>Lucky bastard.</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<btn $caughtLink "Stay and watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>They are not fucking around.</p>
<big>Or actually - they are!</big>
<<media `"activities/peek/daphRoom/" + _activity + "1.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>>
<<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+2" "action">>
<</delayer>>
<<btn $curLoc "Do not risk it" "love+1" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name's is covered in sweat. Her tits are bouncing up and down, in a hypnotizing motion. You feel your legs getting soft.</p>
<<media `"activities/peek/daphRoom/" + _activity + "2.jpg"`>>
<big>All glory to the hypnotits!</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>>
<<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+3" "action">>
<</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name rides the guy like an animal, and her tits are hitting him in the face from right and left like a heavy weight punches.</p>
<<media `"activities/peek/daphRoom/" + _activity + "3.jpg"`>>
<big>You wish it was your face getting battered!</big>
<<btn $caughtLink>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Stay and watch till the end" null "action">>
<<delayer>>
<<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+4" "action">>
<</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>The guy is speeding up.</p>
<<dial "guy" "I'm cumming!">>
<<dial "daphne" "I want it in my mouth!">>
<p>$daphne.name quickly jumps off him and wraps her lips around his dick. He's gasping and you can see his cock twitching, as he pumps his load into her throat.</p>
<<media `"activities/peek/daphRoom/" + _activity + "4.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>She sighs and snuggles close to the guy.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you also cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket "jerkedoff+">>
<p>Meanwhile, $daphne.name sighs and snuggles close to the guy.</p>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<if $daphne.traitKnown != 1>>
<<set $caughtLinkMore = "#moreTrait">>
<</if>>
<<btn $caughtLinkMore "Close the doors" null "action">>
<<chunk null "#moreTrait">>
<p>It takes you a moment to get to your senses after what you just saw in $daphne.name's room. But as soon as you do - one thing becomes incredibly clear...</p>
<<media "shock.mp4">>
<big>$daphne.name is a <<print setup.charTraits.find(obj => {return obj.id === $daphne.trait}).name>>!</big>
<<btn $curLoc null "daphne.info+trait">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "daphne; while=sleep">>
<<chunks>>
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $daphne.name is sleeping.</big>
<<media "activities/peek/daphRoom/daphne_sleep.jpg" "si3">>
<<btn $curLoc null null "si3">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "daphne; while=dressing">>
<<chunks>>
/* Check if the player is caught */
<<set $jerk = null>>
<<set $caught = null>>
<<if setup.minRandLow <= $curRand>>
<<set $caught = [0, 1, 2, 3, 4].random()>>
<</if>>
<<set _activity = ["daphne_dressing0_"].random()>>
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">You see that $daphne.name is changing.</big>
<<media `"activities/peek/daphRoom/" + _activity + "intro.jpg"` "si3">>
<p class="fi3">Ok, bud, here's the deal - you can stay and watch, but if you get caught, $daphne.name might be not so happy about it. What do you want to do?</p>
<<menu "fi3">>
<<btn "#stay" "Stay and watch the show" "dom+2" "action si3">>
<<btn $curLoc "Do not risk it" "love" "action si3">>
<<chunk null "#stay">>
<<set $caughtLink = $caught == 0 ? "#caught" : null>>
<p>You press your face against the crack to see better...</p>
<<media `"activities/peek/daphRoom/" + _activity + "0.jpg"`>>
<big>That tits look lonely without your hands on 'em.</big>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<btn $caughtLink "Stay and watch while jerking off" "dom+2; $jerk+1" "action">>
<<btn $curLoc "Do not risk it" "love" "action">>
<<chunk>>
<<set $caughtLink = $caught == 1 ? "#caught" : null>>
<<delayer>>
<<if $jerk==1>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name is slowly undressing in front of the mirror. She moves her sweat pants down from her hips, revealing her ass to your eyes.</p>
<big>And, by god, it is magnificent!</big>
<<media `"activities/peek/daphRoom/" + _activity + "1.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>>
<<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+2" "action">>
<</delayer>>
<<btn $curLoc "Do not risk it" "love" "action">>
<<chunk>>
<<set $caughtLink = $caught == 2 ? "#caught" : null>>
<<delayer>>
<<if $jerk==2>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name picks a pair of red underwear and a matching dress. She slowly glides her fingers over the delicate material, like she's contemplating it. You notice her nipples getting harder, when she slowly puts it on.</p>
<<media `"activities/peek/daphRoom/" + _activity + "2.jpg"`>>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>>
<<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+3" "action">>
<</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 3 ? "#caught" : null>>
<<delayer>>
<<if $jerk==3>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>The material of her dress wraps around her hips nicely. The two red straps, going around her neck, sqeeze her huge tits, like two pumped up balloons. It barely hides her nipples too, which makes you almost fall inside the room.</p>
<<media `"activities/peek/daphRoom/" + _activity + "3.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<media "activities/peek/dick_intense.mp4">>
<p>Are you sure you want to continue?</p>
<<menu>>
<<btn $caughtLink "Stay and watch more" null "action">>
<<delayer>>
<<btn $caughtLink "Stay and watch while jerking off" "dom+1; !$jerk; $jerk+4" "action">>
<</delayer>>
<<btn $curLoc "Do not risk it" "love+2" "action">>
<<chunk>>
<<set $caughtLink = $caught == 4 ? "#caught" : null>>
<<delayer>>
<<if $jerk==4>>
<big>You can't help but to start stroking your dick.</big>
<<media "activities/peek/jerkoff.mp4">>
<</if>>
<</delayer>>
<p>$daphne.name struggles to put her tits in the dress, but finally manages to squeeze it all in.</p>
<<media `"activities/peek/daphRoom/" + _activity + "4.jpg"`>>
<<btn $caughtLink>>
<<chunk>>
<<delayer>>
<<if !$jerk>>
<p>$daphne.name takes one last look in the mirror and smiles.</p>
<<media "activities/peek/end_show.mp4">>
<big>That's the end of the show.</big>
<<else>>
<p>You stroke your dick faster and faster. You feel a wave after wave of pleasure, bringing you to the moment when...</p>
<big>...you cum!</big>
<<media "activities/peek/jerkoff_cum.mp4">>
<<pocket "jerkedoff+">>
<p>Meanwhile, $daphne.name takes one last look in the mirror and smiles.</p>
<big>That's the end of the show.</big>
<</if>>
<</delayer>>
<<if $daphne.traitKnown != 1>>
<<set $caughtLinkMore = "#moreTrait">>
<</if>>
<<btn $caughtLinkMore "Close the doors" null "action">>
<<chunk null "#moreTrait">>
<p>It takes you a moment to get to your senses after what you just saw in $daphne.name's room. But as soon as you do - one thing becomes incredibly clear...</p>
<<media "shock.mp4">>
<big>$daphne.name is a <<print setup.charTraits.find(obj => {return obj.id === $daphne.trait}).name>>!</big>
<<btn $caughtLink null "daphne.info+trait">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "while=nothing">>
<<chunks>>
<p class="fi0 center">You crack the doors and look inside...</p>
<<media `"activities/peek/peeking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3 center">Unfortunately - you don't see a thing.</big>
<<btn $curLoc "Move away" null "action si3">>
<</chunks>>
<</events>><<events "show">>
<<EVENT "daphne; while=sex">>
<<chunks>>
<p class="fi0">You knock at the doors to $daphne.name's room.</p>
<<media `"activities/knock/knocking" + random(1,3) + ".mp4"` "si1">>
<p class="fi2">You hear a strange commotion and muffled voices coming from inside.</p>
<<dial "daphne" "Oh shit!" "fi2">>
<<dial "player" "It's $player.name. Just wanted to talk." "fi3">>
<<dial "daphne" "Errr... Not right now, hun. I'm busy." "fi3">>
<<dial "player" "It'll just take a moment..." "fi4">>
<<dial "daphne" "Come back... err... come back tomorrow." "fi4">>
<p class="fi5">It seems there's nothing you can do.</p>
<<btn $curLoc null null "si5">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "daphne; while=sleep">>
<<chunks>>
<p class="fi0">You knock at the doors to $daphne.name's room.</p>
<<media `"activities/knock/knocking" + random(1,3) + ".mp4"` "si1">>
<big class="fi3">Nothing.</big>
<p class="fi3">It takes a moment before you realize - she's probably sleeping.</p>
<<btn $curLoc null null "si3">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "daphne; while=dressing">>
<<chunks>>
<p class="fi0">You knock at the doors to $daphne.name's room.</p>
<<media `"activities/knock/knocking" + random(1,3) + ".mp4"` "si1">>
<<dial "daphne" "Who is it?" "fi2">>
<<dial "player" "It's $player.name. Just wanted to talk." "fi2">>
<<dial "daphne" "Give me a moment, hun... I'm changing." "fi3">>
<p class="fi5">You wait couple seconds, before you hear $daphne.name's voice again.</p>
<<dial "daphne" "Ok, hun, come on in!" "fi5">>
<<btn null null "$permission+" "si5">>
<</chunks>>
/* ===================================================================================================================================================================================================================== */
<<EVENT "daphne; while=nothing">>
<<chunks>>
<p class="fi0">You knock at the doors to $daphne.name's room.</p>
<<media `"activities/knock/knocking" + random(1,3) + ".mp4"` "si1">>
<<dial "daphne" "Who is it?" "fi2">>
<<dial "player" "It's $player.name. Just wanted to talk." "fi2">>
<<if $daphne.status <= 2>>
<<set _decision = ["#no", "#no", "#yes"].random()>>
<<elseif $daphne.status == 3>>
<<set _decision = ["#no", "#yes"].random()>>
<<elseif $daphne.status == 4>>
<<set _decision = ["#no", "#yes", "#yes"].random()>>
<<elseif $daphne.status >= 5>>
<<set _decision = "#yes">>
<</if>>
<<menu "si3" null "wildcard single">>
<<btn _decision "Roll the dice!" null "wildcard si3">>
<<chunk null "#yes">>
<<dial "daphne" "Ok, hun, come on in!">>
<p>What are you waiting for?!</p>
<<media "yes_maam.mp4">>
<<btn $curLoc "Go inside" "$permission+" "action">>
<<chunk null "#no">>
<<dial "daphne" "Sorry but not know, I'm busy!">>
<p>You have to try some other time.</p>
<<media "too_bad.mp4">>
<<btn $curLoc>>
<</chunks>>
<</events>><<events "show">>
<<EVENT "daphne; while=sex">> /* Daphne has sex */
<<chunks>>
<p class="fi0">You open the doors and...</p>
<<media "activities/enter/daphRoom/daphne_sex.jpg" "fi2">>
<big class="fi3">Holy fuck.</big>
<<dial "player" "Shit! I didn't know! Sorry!" "fi4">>
<p class="fi4">The guy, balls deep in $daphne.name, looks at you angrily.</p>
<<dial "guy" "That's trespassing, son!" "fi4">>
<<set _dudePic = "dudeDaphne" + $dudeDaphne.pic>>
<<media `"characters/guy/" + _dudePic + ".jpg"` "si5">>
<p class="fi5">You need to quickly figure out what to do.</p>
<<menu "si5">>
<<btn "#run" "Run away" "daphne.love" "action si5">>
<<btn "#join" "Can I join?" "daphne.dom" "dialog si5">>
<<chunk null "#run">>
<<media "run.mp4">>
<p>You turn around and run from the room, closing the doors behind you. It was probably the best decision, but surely $daphne.name is angry at you anyway.</p>
<<btn $curLocParent null "daphne.love-1" "yieldsHide">>
<<chunk null "#join">>
<p>$daphne.name rises from the bed and looks you in the eyes.</p>
<<dial "daphne" "You bursted into my room, and now you have a nerve to ask to join me in bed?">>
<p>I have to tell you, buddy, you really haven't thought that through. The good news is the view is amazing, because in all excitement she forgot to cover herself.</p>
<<media "activities/enter/daphRoom/daphne_angry.jpg">>
<<dial "player" "Well... I mean... I guess?">>
<p>Surprisingly, she didn't smack you right away. Is it possible that she's considering it?</p>
<<if $daphne.status <= 2>>
<<set _decision = ["#getout", "#getout", "#getout", "#stay"].random()>>
<<elseif $daphne.status == 3>>
<<set _decision = ["#getout", "#getout", "#stay"].random()>>
<<elseif $daphne.status == 4>>
<<set _decision = ["#getout", "#stay"].random()>