Your phone chimes. You've got a text. \n\n<<if $text_count is 0>>[[Check your phone.|phone]]\n\n[[Ignore your phone.|ignore]]\n\n<<else if $text_count is 1>>[[Check your phone.|phone2]]\n\n[[Ignore your phone.|ignore]]\n<<else>>[[Check your phone.|phone3]]\n\n[[Ignore your phone.|ignore]]\n<<endif>>\n\n<<set $text to false>>\n<<stopallsound>>\n<<playsound "72127__kizilsungur__sweetalertsound3.wav">>
<<if $partner_blouses is true>><<set $partner_garments.push("blouse")>><<endif>>\n\n<<if $partner_bras is true>><<set $partner_garments.push("bra")>><<endif>>\n\n<<if $partner_dresses is true>><<set $partner_garments.push("dress")>><<endif>>\n\n<<if $partner_jeans is true>><<set $partner_garments.push("jeans")>><<endif>>\n\n<<if $partner_pants is true>><<set $partner_garments.push("pants")>><<endif>>\n\n<<if $partner_shirts is true>><<set $partner_garments.push("shirt")>><<endif>>\n\n<<if $partner_skirts is true>><<set $partner_garments.push("skirt")>><<endif>>\n\n<<if $partner_socks is true>><<set $partner_garments.push("socks")>><<endif>>\n\n<<if $partner_tanktops is true>><<set $partner_garments.push("tank top")>><<endif>>\n\n<<if $partner_tshirts is true>><<set $partner_garments.push("t-shirt")>><<endif>>\n\n<<if $partner_underwear is true>><<set $partner_garments.push("underwear")>><<endif>>\n\n\n\n\n\n
Although - he has been seeing another woman for a little while too, Caroline. You thought they might be getting more serious. Maybe not?\n\nAnyway - back to work.\n\n[[Next.|cycle return]]
<<print $Partners>> <<if $partner is "They">>are<<else>>is<<endif>> wearing a tank top and gym shorts, and you find your eyes wandering <<print $partnerp>> exposed skin for a moment. \n\n<<print $Partners>><<if $partner is "They">>'re<<else>>'s<<endif>> a total cutie.\n\nYou...\n\n[[scope the cutie.|scopethecutie]]\n\n[[sort the laundry.|donotscopethecutie]]<<else>>\n\n<<set $cutie_done to true>>\n<<set $glimpsed_a_cutie to true>>
<<if $dryer_mistakes_partner.length lte 2>>Your partner looks up at you as <<print $partners>> pull<<if $partner neq "They">>s<<endif>> the <<print $dryer_mistakes_partner[$dryer_mistakes_partner.length - 1][0]>> from the basket. "I wish you'd be more careful with my clothes," <<print $partners>> snap<<if $partner neq "They">>s<<endif>>.<<else>>"Seriously?" your partner says, pulling <<print $partnerp>> <<print $dryer_mistakes_partner[2][0]>> from the basket. <<print $Partners>> look<<if $partner neq "They">>s<<endif>> exhausted all of a sudden. "//None// of this stuff is supposed to go in the dryer."<<endif>>\n\n[[Next.|screwed up 3]]
You mutter an apology, and <<print $partners>> let<<if $partner neq "They">>s<<endif>> it drop, although it's obvious from the way <<print $partners>> fold<<if $partner neq "They">>s<<endif>> the clothes - a little too forcefully, tossing them down onto the appropriate pile when they're finished - that <<print $partners>> <<if $partner neq "They">>is<<else>>are<<endif>> still mad. \n\n[[Next.|screwed up 4]]
Of course, when you go get the clothes out of the dryer, <<print $partnerp>> <<print $dryer_mistakes_partner[0][0]>> <<if $dryer_mistakes_partner[0][1] is true>>are<<else>>is<<endif>> not only there but clearly ruined. <<if $dryer_mistakes_partner.length gt 1>>Along with <<print $partnerp>> <<print $dryer_mistakes_partner[1][0]>>. <<if $dryer_mistakes_partner.length gt 2>>And more.<<endif>><<endif>>\n\n[[Next.|screwed up 2]]
/%Shows a message for a specific garment and then removes that garment from the $special_you_garment list so we won't show the message for that kind of message again.\n%/<<if $garment is "blouse">>You really like the color of this one, but when you wear it, it never looks right. Something about the shape or the fit...<<else if $garment is "pants">>You run a hand over the inner thighs. They're getting threadbare. It will be time for a new pair soon.<<else if $garment is "jeans">>This pair is //so// comfortable.<<else if $garment is "underwear">>There's a little tear in this one. Maybe you should just throw them away? Well, they're clean now, you can wear them one more time.<<else if $garment is "bra">>This bra fits great; you should probably get another one like it.<<else if $garment is "shirt">>You love this shirt; it fits you perfectly and it works with a lot of different outfits.<<else if $garment is "t-shirt">>Ugh. You should really throw this away; it's ugly and it doesn't fit. But you're convinced having a shirt you don't mind ruining will come in handy someday.<<else if $garment is "dress">>This dress doesn't fit quite the way it used to. You're not sure if it shrank, or stretched, or if your body's changed. It still looks ok, but the thought nags at you every time you wear it.<<else if $garment is "skirt">>Oh, cool. You've been looking for this one!<<else if $garment is "shorts">>You smile at the sight of them; they make your butt look really good.<<else if $garment is "tank top">>This is the only tank you have that works with one of your favorite outfits. Maybe you'll wear it tomorrow.<<else if $garment is "socks">>These are new. You tend to wait too long before buying new socks, and when you do having them feels like a tiny miracle.<<endif>><<silently>>\n<<set $special_you_garments.splice($special_you_garments.indexOf($garment),1)>>\n<<set $special_garment to false>><<endsilently>>
The truth is you feel angry yourself. You were trying to help by doing laundry for <<print $partnero>>. It was an honest mistake. Why do<<if $partner neq "They">>es<<endif>> <<$partners>> have make such a big thing of it?\n\n[[Next.|sad ending]]
<<set $special_you_garments to ["socks","bra"]>>Array: <<$special_you_garments>>\n<<set $garment to "bra">>Garment: <<$garment>>\n<<if $special_you_garments.indexOf($garment) gte 0>>I own a bra now, it's honestly so exciting. I'm a girl I'm a girl I'm a girl.\n<<set $special_you_garments.splice($special_you_garments.indexOf($garment),1)>><<else>>You should see this text the second time, not the first time.\n<<endif>>\n\n<<if $special_you_garments.indexOf($garment) gte 0>>I own a bra now, it's honestly so exciting. I'm a girl I'm a girl I'm a girl.\n<<set $special_you_garments.splice($special_you_garments.indexOf($garment),1)>><<else>>You should see this text the second time, not the first time.\n<<endif>>\n\n\n
You have unloaded your wet clothes from the washer into one of the laundromat's carts. You wheel it over to an unoccupied dryer. \n\nYou drag over your empty laundry basket as well. \n\n[[Next.|loading2]]\n\n<<display you garments>>\n<<display partner garments>>\n/%These two passages populate the $you_garments and $partner_garments arrays based on the player's choices on the last two screens.%/\n<<set $special_partner_garments to $partner_garments>>\n<<set $special_you_garments to $you_garments>>\n/% We copy the garment lists here so we can keep track of which garments should get special descriptions later in the event of a random event. See the "special partner garment" and "special you garment" passages. %/\n\n
<<silently>>\n<<set $basket_mistakes_partner to ["butt"]>>\n<<set $basket_mistakes_you to ["dick"]>>\n<<set $dryer_mistakes_partner to []>>\n<<set $dryer_mistakes_you to []>>\n<<set $basket_mistakes to ($basket_mistakes_partner.length + $basket_mistakes_you.length)>>\n<<set $dryer_mistakes to ($dryer_mistakes_partner.length + $$dryer_mistakes_you.length)>>\n<<set $mistakes to $basket_mistakes + $dryer_mistakes>>\n\n\n<<endsilently>>You made <<$mistakes>>, including <<$dryer_mistakes>>.
[[next|what]]\n\n<<loopsound "Laundry Take 4 (Bass).mp3">>\n\n
<<silently>><<set $time to 15>>\n<<set $basket_mistakes_partner to []>>\n<<set $basket_mistakes_you to []>>\n<<set $dryer_mistakes_partner to []>>\n/%<<set $example to ["dark blue dress", false]>>\n<<set $dryer_mistakes_partner.push($example)>>\n<<set $dryer_mistakes_you to []>>%/\n%/\n<<set $dryer_mistakes_you to []>>\n<<set $example to ["cute dress you totally look good in", false]>>\n<<set $dryer_mistakes_you.push($example)>>\n<<set $example to ["hot feminine underwear, flattering to your butt, that you feel totally comfortable in and wear around your partner", true]>>\n<<set $dryer_mistakes_you.push($example)>>\n<<set $example to ["purple skirt that you wear anywhere, you don't even care", false]>>\n<<set $dryer_mistakes_you.push($example)>>\n<<set $partner to "They">>\n<<set $text_advice to true>>\n<<set $scoped_a_cutie to true>>\n<<display pronouns>>\n\n<<endsilently>>[[test|end]]\n\n
<<set $random to either($randomizer)>><<if $random lte 4>><<set $special_garment to true>><<else if $random lte 7>><<if $cutie_done is false>><<set $cutie to true>><<endif>><<else if $random lte 10>><<if $text_done is false>><<set $text to true>><<endif>><<endif>>
The Laundry
<<stopallsound>><<if $cutie_count is 0>>The dryer next to yours buzzes and slows to a halt. Someone's clothes are done. \n\nIdly curious, you glance around to see whose they are. Nobody takes any notice; the owner must have stepped out of the laundromat.\n\n[[Next.|cycle return]]\n<<set $cutie_count to 1>>\n<<playsound "21871__nofeedbak__sarahbuzzer.wav">>\n<<else>>The owner of the clothes in the dryer next to yours appears. \n\nThe two of you exchange a smile, polite but neutral, and then <<print $partners>> start<<if $partner neq "They">>s<<endif>> unloading <<print $partnerp>> clothes into a duffel bag, folding each garment carefully as <<print $partners>> go<<if $partner neq "They">>es<<endif>>. \n\n[[Next.|cutie2]]\n<<playsound "182691__kingsrow__footsteps.wav">><<fadeoutsound "182691__kingsrow__footsteps.wav">>\n<<endif>>\n\n<<set $cutie to false>>\n\n
/%Shows a message for a specific garment and then removes that garment from the $special_partner_garment list so we won't show the message for that kind of message again.\n%/<<if $garment is "blouse">>This one's new, and very much in favor at the moment. <<print $Partners>><<if $partner neq "They">>'s<<else>>'ve<<endif>> been wearing it a lot.<<else if $garment is "pants">>Better be careful with these - they were expensive. And they make <<print $partnerp>> butt look amazing.<<else if $garment is "jeans">>These are <<print $partnerp>> favorite pair. The denim is soft from long use, and getting a little worn out.<<else if $garment is "underwear">>You smile at the sight of this particular pair. You really like them.<<else if $garment is "bra">>You don't recognize this one; could it be someone else's and have gotten mixed into your laundry somehow? No, it's your partner's size. Probably just new. <<else if $garment is "shirt">>This shirt is definitely getting faded. You should tell <<print $partnero>> to get a new one.<<else if $garment is "t-shirt">><<print $Partners>><<if $partner is "They">>'ve<<else>>'s<<endif>> had this shirt forever, and <<print $partners>><<if $partner is "They">>'re<<else>>'s<<endif>> adorably attached to it.<<else if $garment is "dress">>This is <<print $partnerp>> favorite dress. <<print $Partners>> looks amazing in it.<<else if $garment is "skirt">>Honestly, you never liked this skirt. Somehow the length doesn't flatter <<print $partnero>>.<<else if $garment is "tank top">>It's getting pretty ratty - might be due for retirement soon. But then again, <<print $partners>> only ever wear<<if $partner neq "They">>s<<endif>> it around the house.<<else if $garment is "socks">>Originally this pair was kind of a joke - they're kids' socks with little cartoon characters on them - but <<print $partners>> actually wear<<if $partner neq "They">>s<<endif>> them all the time. <<endif>><<silently>>\n<<set $special_partner_garments.splice($special_partner_garments.indexOf($garment),1)>>\n<<set $special_garment to false>><<endsilently>>
Done
You're doing your partner's laundry. Select the things that <<if $test is "he">>[[man|testy][$test to "she"]]<<else if $test is "she">>[[woman|testy][$test to "they"]]<<else>>[[they|testy][$test to "he"]]<<endif>> wears:\n\n<<if $dress is false>>[[Dresses|testy][$dress to true]]<<endif>>\n<<if $skirt is false>>[[Skirts|testy][$skirt to true]]<<endif>>\n<<if $pants is false>>[[Pants|testy][$pants to true]]<<endif>>\n<<if $socks is false>>[[Socks|testy][$socks to true]]<<endif>>\n\nSelected:\n<<if $dress is true>>Dresses ([[cancel|testy][$dress to false]])<<endif>>\n<<if $skirt is true>>Skirts ([[cancel|testy][$skirt to false]])<<endif>>\n<<if $pants is true>>Pants ([[cancel|testy][$pants to false]])<<endif>>\n<<if $socks is true>>Socks (([[cancel|testy][$socks to false]])<<endif>>\n\n[[Confirm|noo]]
As you're folding, though, you do find that your <<print $dryer_mistakes_you[0][0]>> was damaged going through the dryer. You're not sure you'll be able to wear it again. <<if $dryer_mistakes_you.length gt 2>>Same with your <<print $dryer_mistakes_you[1][0]>><<if $dryer_mistakes_you.length gt 3>>, and more<<endif>>.<<endif>>\n\nFrustrating.\n\n[[Next.|comfort]]
/% $plural, assigned in one of the passages off the description passage, determines whether the garment is grammatically plural ("pants") \n%/<<if $plural is false>>[[Put it in the dryer.|dryer]]\n\n[[Put it in the basket.|basket]]<<else>>[[Put them in the dryer.|dryer]]\n\n[[Put them in the basket.|basket]]<<endif>>
<<if $partner is "He">>\n<<set $partners to "he">>\n<<set $Partners to "He">>\n<<set $partnero to "him">>\n<<set $Partnero to "Him">>\n<<set $partnerp to "his">>\n<<set $Partnerp to "His">>\n<<else if $partner is "She">>\n<<set $partners to "she">>\n<<set $Partners to "She">>\n<<set $partnero to "her">>\n<<set $Partnero to "Her">>\n<<set $partnerp to $partnero>>\n<<set $Partnerp to $Partnero>>\n<<else>>\n<<set $partners to "they">>\n<<set $Partners to "They">>\n<<set $partnero to "them">>\n<<set $Partnero to "Them">>\n<<set $partnerp to "their">>\n<<set $Partnerp to "Their">>\n<<endif>>
<<display description>>\n\n/% See description passage for an explanation of why this passage exists. %/
Your apartment smells like cooking. Your partner calls a greeting from the <<if $time lt 30>>kitchen. \n\n"Hey! I'll be done in a minute. I'll come help you lay those out, and then we can eat."<<else>>living room. \n\n"Hey! There's a plate for you in the kitchen. I'll come help you."<<endif>>\n\n[[Next.|end2]]\n\n<<stopallsound>>
<<if $load gt 12>>You're just getting started.<<else if $load gt 9>>You have plenty more to do.<<else if $load gt 5>>You're maybe about half done.<<else>>You're almost done.<<endif>>
/% sounds turns off in the cutie and text passages. If we went to those passages, we bring sound back in this passage. %/<<loopsound "Laundry Take 4 (Full).mp3">><<display cycle>>
You write back a text advising him not to go out with the girl from the coffee shop. He really likes Caroline; that's too valuable to screw up.\n\n[[Next.|anyway2]]\n\n<<set $text_advice to "no">>
You phone can wait. \n\nRight now is for wet fabric between your fingers and the hum of the dryers, and sorting clothes. \n\n[[Next|cycle return]]\n<<set $text_done to true>>
So this is what you wear?\n<<if $you_blouses is true>>\nblouses<<endif>><<if $you_bras is true>>\nbras<<endif>><<if $you_dresses is true>>\ndresses<<endif>><<if $you_jeans is true>>\njeans<<endif>><<if $you_pants is true>>\npants<<endif>><<if $you_shirts is true>>\nshirts<<endif>><<if $you_skirts is true>>\nskirts<<endif>><<if $you_socks is true>>\nsocks<<endif>><<if $you_tanktops is true>>\ntank tops<<endif>><<if $you_tshirts is true>>\nt-shirts<<endif>><<if $you_underwear is true>>\nunderwear<<endif>>\n\n[[That's right...|loading]]\n\n[[No, wait...|you]]
After dinner, you go and get the remaining laundry from the dryer, and <<print $partners>> help<<if $partner neq "They">>s<<endif>> you fold it and put it away.\n\n<<if $dryer_mistakes_you.length gt 0>><<display own goal>><<else>><<display all good>><<endif>>\n\n
You write back a text encouraging him to go out with the girl from the coffee shop - he's so excited, how could he not?\n\n[[Next.|anyway2]]\n\n<<set $text_advice to "yes">>
The little spat puts a pallor over your apartment that lingers the whole evening, until you climb into bed together. Habit takes over, and you and your lover find yourselves holding each other in the darkness. \n\nYou hear <<print $partnerp>> breathing change, slowing, becoming more regular, and then <<print $partners>> nestle<<if $partner neq "They">>s<<endif>> sleepily closer to you. The little fight starts to seem silly and pointless; anyway, it's behind you now. \n\nAnd tomorrow is another day. \n\n[[The End]]\n\n<<set $ending to 2>>
<<if $dryer_mistakes_partner.length gte 1>>As the basket gets empty, however, <<print $partners>> frown<<if $partner neq "They">>s<<endif>>. "Didn't we wash my <<print $dryer_mistakes_partner[0][0]>>?" \n\nYou aren't sure. "<<if $dryer_mistakes_partner[0][1] is true>>They're<<else>>It's<<endif>> probably in the dryer," you say uncertainly. \n\n[[Next.|end4]]\n<<else>>The two of you make short work of the remaining clothes. When you finish, <<print $partners>> smile<<if $partner neq "They">>s<<endif>> brightly at you. "Thanks for doing the laundry," <<print $partners>> say<<if $partner neq "They">>s<<endif>>, and give<<if $partner neq "They">>s<<endif>> you a light kiss.\n\n"Thanks for making dinner," you say, and return it. \n\n[[Next.|good job]]\n<<endif>>
Some things you hang on the shower rod, or on a small drying rack you keep in the bathroom; some you lay flat wherever you can find the space. \n\nYour partner comes in to help after a moment, as promised. <<if $basket_mistakes_partner.length + $basket_mistakes_you gt 1>><<print $Partners>> point<<if $partner neq "They">>s<<endif>> out a few things of <<print $partnerp>> that could have gone back in the dryer. "No big deal," <<print $partners>> hurries to add. "Just might save us a few minutes next time."<<endif>>\n\n[[Next.|end3]]
<<print $Partners>> purse<<if $partner neq "They">>s<<endif>> <<print $partnerp>> lips. You feel yourself tense. <<print $Partners>><<if $partner is "They">>'re<<else>>'s<<endif>> upset. \n\n"<<if $dryer_mistakes_partner[0][1] is true>>Those<<else>>That<<endif>> shouldn't go in the dryer," <<print $partners>> say<<if $partner neq "They">>s<<endif>>.\n\n[[Evade.|maybe]] \n\n[[Apologize.|apologize]]
<<if $you_blouses is true>><<set $you_garments.push("blouse")>><<endif>>\n\n<<if $you_bras is true>><<set $you_garments.push("bra")>><<endif>>\n\n<<if $you_dresses is true>><<set $you_garments.push("dress")>><<endif>>\n\n<<if $you_jeans is true>><<set $you_garments.push("jeans")>><<endif>>\n\n<<if $you_pants is true>><<set $you_garments.push("pants")>><<endif>>\n\n<<if $you_shirts is true>><<set $you_garments.push("shirt")>><<endif>>\n\n<<if $you_skirts is true>><<set $you_garments.push("skirt")>><<endif>>\n\n<<if $you_socks is true>><<set $you_garments.push("socks")>><<endif>>\n\n<<if $you_tanktops is true>><<set $you_garments.push("tank top")>><<endif>>\n\n<<if $you_tshirts is true>><<set $you_garments.push("t-shirt")>><<endif>>\n\n<<if $you_underwear is true>><<set $you_garments.push("underwear")>><<endif>>\n
That night you crawl into bed together and hold each other in the dark. "Good night," you whisper to <<print $partnero>> as <<print $partnerp>> breathing slows and deepens, and <<print $partners>> make<<if $partner neq "They">>s<<endif>> a happy, semi-conscious sound, nestling against you under the covers. \n\nAnd before long, you feel yourself drifting off as well.\n\n[[The End]]\n\n<<set $ending to 1>>
You check the time - 7:28. You're not just sleepy, you're hungry. Maybe dinner's ready back home... \n\n[[Next.|cycle]]\n\n<<set $timepassing to true>>
<<loopsound "Laundry Take 4 (Full).mp3">>
Revise clothing list (make revisions before deep dive testing)\nPartner and you garment lists generate correctly from variables in "you" and "lover"\nOutput of special events\nSpecial partner garments\nMistake lists populate correctly \nTime passes correctly\nLoad depletes correctly\nTest de-duping more thoroughly (see ongoing list?)\n
You yawn and check the time. 7:20. You're getting sleepy; it's been a long day. \n\n[[Next.|cycle]]\n\n<<set $timepassing to true>>
You take a moment to send him a quick acknowledgement and congratulations. He's been talking about this girl a lot; he obviously really likes her.\n\n[[Next.|anyway]]
<<if ($garment neq "socks") and ($garment neq "jeans") and ($garment neq "pants")>>\n<<set $plural to false>>\n<<else>>\n<<set $plural to true>>\n<<endif>>\n\n\n\n
It's your friend again. \n\n"so here's the thing i gave her my number... but now i'm kind of freaking out. caroline and i had this conversation last week... me and caroline are seeing a LOT of each other and i lke it. maybe this is bad timing... but i'm really excited about CSG too... what do you think?"\n\nOh jeez.\n\n[[Advise him to go out with the new girl.|go out]]\n\n[[Advise him not to go out with the new girl.|do not go out]]\n\n[[Ask a question.|question]]\n\n[[Reply later.|ignore]]\n\n<<set $text_count to 2>>
It's your friend again. \n\n<<if $text_advice is "question">>"hmmmmmm... i'm going to have to think about that. urgh, dating is hard ;) thanks for listening."<<else>>"urgh, this is hard. i'm going to think about it for a while. i have at least until she calls me, assuming she even does. thanks for listening and telling me what you think, tho :)"<<endif>>\n\n[[Next.|anyway3]]
Ok, enough drama. Back to work.\n\n[[Next.|cycle return]]
You text back a smiley. You wonder how much you actually helped. But then, sometimes just talking it out is the best thing. \n\nYou turn back to the task at hand. \n\n[[Next.|cycle return]]\n\n<<set $text_done to true>>\n<<set $text_connected is true>>
<<set $direction to "dryer">>\n<<set $random to either($randomizer)>>\n<<if $garment is "blouse">>\n<<if $random gte 6>>\n<<set $direction to "line dry">>\n<<endif>>\n<<else if $garment is "bra">>\n<<set $direction to "line dry">>\n<<else if $garment is "pants">>\n<<if $random gte 5>>\n<<set $direction to "line dry">>\n<<endif>>\n<<else if $garment is "dress">>\n<<if $random gte 3>>\n<<set $direction to "line dry">>\n<<endif>>\n<<else if $garment is "skirt">>\n<<if $random gte 6>>\n<<set $direction to "line dry">>\n<<endif>>\n<<else if $garment is "jeans">>\n<<if $random gte 7>>\n<<set $direction to "line dry">>\n<<endif>>\n<<else if $garment is "shirt">>\n<<if $random gte 8>>\n<<set $direction to "line dry">>\n<<endif>>\n<<endif>>
<<print $Partners>> take<<if $partner neq "They">>s<<endif>> a deep breath, and nod<<if $partner neq "They">>s<<endif>>. \n\n"I understand it was a mistake. I guess I feel a little angry because..." You can tell <<$partners>><<if $partner neq "They">>'s<<else>>'re<<endif>> picking <<$partnerp>> words with care. "...because when you don't take care of my things, it feels like you don't care about me." \n\n[[Next.|apologize3]]
<<silently>>\n<<set $randomizer to [1,2,3,4,5,6,7,8,9,10]>>\n<<endsilently>><<set $garment to prompt("Garment")>><<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n<<silently>><<display directions>><<endsilently>><<print $random>>,<<print $direction>>\n\n[[Change garment.|direction test]]
<<print $Partners>> smile<<if $partner neq "They">>s<<endif>>. "Thanks. Next time, maybe you could you err on the side of bringing things back here? I'd rather have more things to hang up and not risk anything getting damaged."\n\n[[Next.|apologize5]]
You return <<print $partnerp>> smile. "Yeah, I can do that."\n\n<<print $Partners>> reach<<if $partner neq "They">>es<<endif>> out and squeeze<<if $partner neq "They">>s<<endif>> your hand before turning back to <<$partnerp>> work. \n\n[[Next.|apologize6]]
You get a little tense when you go to retrieve the clothes from the dryer.\n\nBut your partner is calm as you go through the clean clothes together, even when <<print $partners>> find<<if $partner neq "They">>s<<endif>> <<print $partnerp>> <<print $dryer_mistakes_partner[0][0]>>, clearly ruined.\n\n"Oh well," <<print $partners>> say<<if $partner neq "They">>s<<endif>> with a sigh and a reassuring smile in your direction. And <<print $partners>> go<<if $partner neq "They">>es<<endif>> to throw it away without further comment. <<if $dryer_mistakes_partner.length gt 2>>\n\nEven the discovery of a few more garments that shouldn't have gone through the dryer doesn't dent <<print $partnerp>>. <<print $Partners>> trust<<if $partner neq "They">>s<<endif>> you to do better next time.<<endif>>\n\n[[Next.|happy ending]]
deecity
<<print $Partners>> wish<<if $partner neq "They">>es<<endif>> you good night. "Thanks for doing the laundry," <<print $partners>> add<<if $partner neq "They">>s<<endif>>, <<print $partnerp>> words starting to blur together as they drift off. \n\nYou smile, and you hold them a little tighter. "You're welcome." But they're already asleep. \n\n[[The End]]\n<<set $ending to 3>>
So this is what your partner wears?\n<<if $partner_blouses is true>>\nblouses<<endif>><<if $partner_bras is true>>\nbras<<endif>><<if $partner_dresses is true>>\ndresses<<endif>><<if $partner_jeans is true>>\njeans<<endif>><<if $partner_pants is true>>\npants<<endif>><<if $partner_shirts is true>>\nshirts<<endif>><<if $partner_skirts is true>>\nskirts<<endif>><<if $partner_socks is true>>\nsocks<<endif>><<if $partner_tanktops is true>>\ntank tops<<endif>><<if $partner_tshirts is true>>\nt-shirts<<endif>><<if $partner_underwear is true>>\nunderwear<<endif>>\n\n[[That's right...|you]]\n\n[[No, wait...|what you call them]]
That night you crawl into bed together and hold each other in the dark. "How you feeling?" <<print $partners>> murmur<<if $partner neq "They">>s<<endif>> to you.\n\n"Eh," you answer. "Better." And you do. There's still a spark of annoyance. But it doesn't seem like quite such a big deal now. And the concerns of the day are drifting away in the warmth under the covers. \n\n[[Next.|ok ending]]
(function(){version.extensions.replaceMacrosCombined={major:1,minor:1,revision:7};var nullobj={handler:function(){}};function showVer(n,notrans){if(!n){return;}n.innerHTML="";\nnew Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");n.style.display="inline";n.classList.remove("revision-span-out");if(!notrans){n.classList.add("revision-span-in");\nif(n.timeout){clearTimeout(n.timeout);}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");n=null;},20);}}function hideVer(n,notrans){if(!n){return;\n}n.setAttribute("data-enabled","false");n.classList.remove("revision-span-in");if(n.timeout){clearTimeout(n.timeout);}if(!notrans){n.classList.add("revision-span-out");\nn.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");n.style.display="none";n.innerHTML="";}n=null;\n},1000);}else{n.style.display="none";n.innerHTML="";n=null;}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;function tagfound(i,e,endtag){for(var j=0;\nj<e.length;j++){if(a.indexOf("<<"+e[j]+(endtag?">>":""),i)==i){return e[j];}}}a=b.source.slice(k);for(i=0;i<a.length;i++){if(tg=tagfound(i,starttags)){l++;}else{if((tg=tagfound(i,desttags,true))&&l==0){b.nextMatch=k+i+tg.length+4;\nreturn[c,tg];}else{if(tg=tagfound(i,endtags,true)){l--;if(l<0){return null;}}}}c+=a.charAt(i);}return null;}var begintags=[];var endtags=[];function revisionSpanHandler(g,e,f,b){var k=b.source.indexOf(">>",b.matchStart)+2,vsns=[],vtype=e,flen=f.length,becomes,c,cn,m,h,vsn;\nfunction mkspan(vtype){h=insertElement(m,"span",null,"revision-span "+vtype);h.setAttribute("data-enabled",false);h.style.display="none";h.tweecode="";return h;}if(this.shorthand&&flen){while(f.length>0){vsns.push([f.shift(),(this.flavour=="insert"?"gains":"becomes")]);\n}}else{if(this.flavour=="insert"||(this.flavour=="continue"&&this.trigger=="time")){vsns.push(["","becomes"]);}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype]);}else{becomes=["becomes","gains"];c=tagcontents(b,begintags,becomes.concat(endtags),endtags,k);if(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);\nc=tagcontents(b,begintags,becomes,endtags,b.nextMatch);}c=tagcontents(b,begintags,["end"+e],endtags,b.nextMatch);}if(!c){throwError(g,"can't find matching end"+e);\nreturn;}vsns.push(c);if(this.flavour=="continue"){k=b.nextMatch;b.nextMatch=k+b.source.slice(k).length;vsns.push([b.source.slice(k),""]);}}if(this.flavour=="remove"){vsns.push(["","becomes"]);\n}cn=0;m=insertElement(g,"span",null,e);m.setAttribute("data-flavour",this.flavour);h=mkspan("initial");vsn=vsns.shift();h.tweecode=vsn[0];showVer(h,true);while(vsns.length>0){if(vsn){vtype=vsn[1];\n}vsn=vsns.shift();h=mkspan(vtype);h.tweecode=vsn[0];}if(typeof this.setup=="function"){this.setup(m,g,f);}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove");\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_");}function keySetup(m,g,f){var key=f[0];m.setEventListener("keydown",function l(e){var done=!revise("revise",m);\nif(done){m.removeEventListener("keydown",l);}});}function timeSetup(m,g,f){function cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return Number(s.slice(0,-2))||0;\n}else{if(s.slice(-1).toLowerCase()=="s"){return Number(s.slice(0,-1))*1000||0;}}}throwError(g,s+" isn't a CSS time unit");return 0;}var tm=cssTimeUnit(f[0]);var s=state.history[0].passage.title;\nsetTimeout(function timefn(){if(state.history[0].passage.title==s){var done=!revise("revise",m);if(!done){setTimeout(timefn,tm);}}},tm);}function hoverSetup(m){var fn,noMouseEnter=(document.head.onmouseenter!==null),m1=m.children[0],m2=m.children[1],gains=m2.className.indexOf("gains")>-1;\nif(!m1||!m2){return;}m1.onmouseenter=function(e){var efp=document.elementFromPoint(e.clientX,e.clientY);while(efp&&efp!==this){efp=efp.parentNode;}if(!efp){return;\n}if(this.getAttribute("data-enabled")!="false"){revise("revise",this.parentNode);}};m2.onmouseleave=function(e){var efp=document.elementFromPoint(e.clientX,e.clientY);\nwhile(efp&&efp!==this){efp=efp.parentNode;}if(efp){return;}if(this.getAttribute("data-enabled")!="false"){revise("revert",this.parentNode);}};if(gains){m1.onmouseleave=m2.onmouseleave;\n}if(noMouseEnter){fn=function(n){return function(e){if(!event.relatedTarget||(event.relatedTarget!=this&&!(this.compareDocumentPosition(event.relatedTarget)&Node.DOCUMENT_POSITION_CONTAINED_BY))){this[n]();\n}};};m1.onmouseover=fn("onmouseenter");m2.onmouseout=fn("onmouseleave");if(gains){m1.onmouseout=m2.onmouseout;}}m=null;}function mouseSetup(m){var evt=(document.head.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null;}};m=null;}function linkSetup(m,g,f){var l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);l.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m);}if(done){this.parentNode.insertBefore(m,this);this.parentNode.removeChild(this);}};l=null;}function visitedSetup(m,g,f){var i,done,shv=state.history[0].variables,os="once seen",d=(m.firstChild&&(this.flavour=="insert"?m.firstChild.nextSibling:m.firstChild).tweecode);\nshv[os]=shv[os]||{};if(d&&!shv[os].hasOwnProperty(d)){shv[os][d]=1;}else{for(i=shv[os][d];i>0&&!done;i--){done=!revise("revise",m,true);}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1;\n}}}[{name:"insert",flavour:"insert",trigger:"link",setup:linkSetup},{name:"timedinsert",flavour:"insert",trigger:"time",setup:timeSetup},{name:"insertion",flavour:"insert",trigger:"revisemacro",setup:revisionSetup},{name:"later",flavour:"insert",trigger:"visited",setup:visitedSetup},{name:"keyinsert",flavour:"insert",trigger:"key",setup:keySetup},{name:"replace",flavour:"replace",trigger:"link",setup:linkSetup},{name:"timedreplace",flavour:"replace",trigger:"time",setup:timeSetup},{name:"mousereplace",flavour:"replace",trigger:"mouse",setup:mouseSetup},{name:"hoverreplace",flavour:"replace",trigger:"hover",setup:hoverSetup},{name:"revision",flavour:"replace",trigger:"revisemacro",setup:revisionSetup},{name:"keyreplace",flavour:"replace",trigger:"key",setup:keySetup},{name:"timedremove",flavour:"remove",trigger:"time",setup:timeSetup},{name:"mouseremove",flavour:"remove",trigger:"mouse",setup:mouseSetup},{name:"hoverremove",flavour:"remove",trigger:"hover",setup:hoverSetup},{name:"removal",flavour:"remove",trigger:"revisemacro",setup:revisionSetup},{name:"once",flavour:"remove",trigger:"visited",setup:visitedSetup},{name:"keyremove",flavour:"remove",trigger:"key",setup:keySetup},{name:"continue",flavour:"continue",trigger:"link",setup:linkSetup},{name:"timedcontinue",flavour:"continue",trigger:"time",setup:timeSetup},{name:"mousecontinue",flavour:"continue",trigger:"mouse",setup:mouseSetup},{name:"keycontinue",flavour:"continue",trigger:"key",setup:keySetup},{name:"cycle",flavour:"cycle",trigger:"revisemacro",setup:revisionSetup},{name:"mousecycle",flavour:"cycle",trigger:"mouse",setup:mouseSetup},{name:"timedcycle",flavour:"cycle",trigger:"time",setup:timeSetup},{name:"keycycle",flavour:"replace",trigger:"key",setup:keySetup}].forEach(function(e){e.handler=revisionSpanHandler;\ne.shorthand=(["link","mouse","hover"].indexOf(e.trigger)>-1);macros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);endtags.push("end"+e.name);});function insideDepartingSpan(elem){var r=elem.parentNode;\nwhile(!r.classList.contains("passage")){if(r.classList.contains("revision-span-out")){return true;}r=r.parentNode;}}function reviseAll(rt,rname){var rall=document.querySelectorAll(".passage [data-flavour]."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){if(!insideDepartingSpan(rall[i])){ret=revise(rt,rall[i])||ret;}}return ret;}function revise(rt,r,notrans){var ind2,curr,next,ind=-1,rev=(rt=="revert"),rnd=(rt.indexOf("random")>-1),fl=r.getAttribute("data-flavour"),rc=r.childNodes,cyc=(fl=="cycle"),rcl=rc.length-1;\nfunction doToGainerSpans(n,fn){for(var k=n-1;k>=0;k--){if(rc[k+1].classList.contains("gains")){fn(rc[k],notrans);}else{break;}}}for(var k=0;k<=rcl;k++){if(rc[k].getAttribute("data-enabled")=="true"){ind=k;\n}}if(rev){ind-=1;}curr=(ind>=0?rc[ind]:(cyc?rc[rcl]:null));ind2=ind;if(rnd){ind2=(ind+(Math.floor(Math.random()*rcl)))%rcl;}next=((ind2<rcl)?rc[ind2+1]:(cyc?rc[0]:null));\nvar docurr=(rev?showVer:hideVer);var donext=(rev?hideVer:showVer);var currfn=function(){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);doToGainerSpans(ind,docurr,notrans);\n}};var nextfn=function(){donext(next,notrans);if(rnd){doToGainerSpans(ind2+1,donext,notrans);}};if(!rev){currfn();nextfn();}else{nextfn();currfn();}return(cyc?true:(rev?(ind>0):(ind2<rcl-1)));\n}macros.revert=macros.revise=macros.randomise=macros.randomize={handler:function(a,b,c){var l,rev,rname;function disableLink(l){l.style.display="none";}function enableLink(l){l.style.display="inline";\n}function updateLink(l){if(l.className.indexOf("random")>-1){enableLink(l);return;}var rall=document.querySelectorAll(".passage [data-flavour]."+rname),cannext,canprev,i,ind,r,fl;\nfor(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");if(insideDepartingSpan(r)){continue;}if(fl=="cycle"){cannext=canprev=true;}else{if(r.firstChild.getAttribute("data-enabled")==!1+""){canprev=true;\n}if(r.lastChild.getAttribute("data-enabled")==!1+""){cannext=true;}}}var can=(l.classList.contains("revert")?canprev:cannext);(can?enableLink:disableLink)(l);}function toggleText(w){w.classList.toggle(rl+"Enabled");\nw.classList.toggle(rl+"Disabled");w.style.display=((w.style.display=="none")?"inline":"none");}var rl="reviseLink";if(c.length<2){throwError(a,b+" macro needs 2 parameters");\nreturn;}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);l.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;var v="";var end=false;var out=false;\nif(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);c.shift();}switch(c[c.length-1]){case"end":end=true;c.pop();break;case"out":out=true;c.pop();break;}var h=state.history[0].variables;\nfor(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));var d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");if(on){h[v]=c[i];l.setAttribute("data-cycle",i);\n}else{d.style.display="none";}insertText(d,c[i]);l.appendChild(d);}l.onclick=function(){reviseAll(b,rname);var t=this.childNodes,u=this.getAttribute("data-cycle")-0,m=t.length,n,lall,i;\nif((end||out)&&u>=m-(end?2:1)){if(end){n=this.removeChild(t[u+1]||t[u]);n.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this);}else{this.parentNode.removeChild(this);\nreturn;}}else{toggleText(t[u]);u=(u+1)%m;if(v){h[v]=c[u];}toggleText(t[u]);this.setAttribute("data-cycle",u);}lall=document.getElementsByClassName(rl+"_"+rname);\nfor(i=0;i<lall.length;i++){updateLink(lall[i]);}};disableLink(l);setTimeout((function(l){return function(){updateLink(l);};}(l)),1);l=null;}};macros.mouserevise=macros.hoverrevise={handler:function(a,b,c,d){var endtags=["end"+b],evt=(window.onmouseenter===null?"onmouseenter":"onmouseover"),t=tagcontents(d,[b],endtags,endtags,d.source.indexOf(">>",d.matchStart)+2);\nif(t){var rname=c[0].replace(" ","_"),h=insertElement(a,"span",null,"hoverrevise hoverrevise_"+rname),f=function(){var done=!reviseAll("revise",rname);if(b!="hoverrevise"&&done){this[evt]=null;\n}};new Wikifier(h,t[0]);if(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname);};}else{h[evt]=f;}h=null;}}};macros.instantrevise={handler:function(a,b,c,d){reviseAll("revise",c[0].replace(" ","_"));\n}};macros.endmouserevise=nullobj;macros.endhoverrevise=nullobj;}());
/%This is a game where the player performs a menial task, sorting laundry into dryer-safe and non-dryer safe items. It's possible to make mistakes and there are consequences, in different possible endings once all the laundry is sorted, but the game isn't meant to be challenging per se. The gameplay is simple to mirror the actual experience of being in a laundromat, which requires a certain degree of attention but also allows the mind to wander.\n%/<<silently>>\n/%In this game the player is doing laundry for themselves and a romantic partner. The partner is characterized with a pronoun, which the player can choose.%/\n<<set $partner to "He">>\n\n/%Variables for each type of garment that you or your partner might have in the laundry. They are mostly random to start except for socks and underwear (to assure that something will always show as in the load by default). These can be toggled by the player on some of the first few screens.%/\n<<set $you_bras to false>>\n<<set $you_blouses to false>>\n<<set $you_dresses to false>>\n<<set $you_jeans to false>>\n<<set $you_pants to false>>\n<<set $you_shirts to false>>\n<<set $you_skirts to false>>\n<<set $you_socks to false>>\n<<set $you_tanktops to false>>\n<<set $you_tshirts to false>>\n<<set $you_underwear to false>>\n\n<<set $partner_bras to false>>\n<<set $partner_blouses to false>>\n<<set $partner_dresses to false>>\n<<set $partner_jeans to false>>\n<<set $partner_pants to false>>\n<<set $partner_shirts to false>>\n<<set $partner_skirts to false>>\n<<set $partner_socks to false>>\n<<set $partner_tanktops to false>>\n<<set $partner_tshirts to false>>\n<<set $partner_underwear to false>>\n\n/%These two arrays are created here as empty, and populated when the player finalizes what they wear and what their partner wears.%/\n<<set $partner_garments = []>>\n<<set $you_garments = []>>\n\n/%These are arrays that will be used to randomize different things through out the game. Each "turn" the user draws a new unique garment which is generated by combining the below with one of the items in $partner_garments or $you_garments. %/\n<<set $shades = ["light ","dark "]>>\n<<set $colors = ["blue ","red ","black ","white ","pink ","purple ","green ", "grey "]>>\n<<set $directions = ["dryer","line dry"]>>\n\n/% $deduper is an array that is populated with each new garment and then checked each turn to make sure that the garment for that turn doesn't replicate an earlier garment. %/\n<<set $deduper = []>>\n/%Each "turn" the player has a chance of encountering a random event. $randomizer is used like a 10-sided die to see if an event generates.%/\n<<set $randomizer = [1,2,3,4,5,6,7,8,9,10]>>\n\n/% $load indicates the number of garments in the load. We subtract from load each turn. When it reaches zero, the game is over. \n\n$time measures how many turns the game has gone on.\n\n$initial runs a line of code in the basic passage the first time the player hits that passage.%/\n<<set $load = 16>>\n<<set $time to 0>>\n<<set $initial to true>>\n\n/%These arrays keep a record of mistakes the player makes. $dryer_mistakes records items that go into the dryer but shouldn't; $basket_mistakes does the reverse. \n<<set $dryer_mistakes_you to []>>\n<<set $dryer_mistakes_partner to []>>\n<<set $basket_mistakes_you to []>>\n<<set $basket_mistakes_partner to []>>\n/% when items are added to one of the mistake arrays, different info about them is first added to the tuple array, and then the contents of the tuple array are added to the mistake array. This allows that info to be referenced when a specific garment is referred to at the end of the game./%\n<<set $tuple to []>>\n<<endsilently>>It's 7:15 on a Wednesday night.\n\nYour partner is back in your apartment, making dinner.\n\nYou're in the laundromat across the street.\n\n[[Next.|what you call them]]\n\n<<loopsound "Laundry Take 4 (Bass).mp3">>
"I'm sorry," you say. "That was my mistake. I should have been more careful." \n\n[[Next.|apologize2]]
Out of the corner of your eye, you take a moment to appreciate <<print $partnerp>> bare arms and shoulders, the outline of <<print $partnerp>> thighs through <<print $partnerp>> shorts, the profile of <<print $partnerp>> nose.\n\n[[Yes.|scope]]\n\n
Some notes on config values that impact the game experience:\n\nLoad: The size of a load of laundry. This is the principal driver of how long the game will last. Set in start and decremented in cycle. \n\nRandom/randomizer: Triggers whether a random event will occur every turn. Random uses randomizer to, essentially, roll a d6. If it returns 4+,
You don't know what he should do - how could you? \n\nBut he isn't really asking for advice. He just needs a sounding board. You write back a text with a question that you hope will help him think about what he wants. \n\n[[Next.|anyway2]]\n\n<<set $text_advice to "question">>
<<silently>>\n/% Remove one garment from the garments remaining to be sorted. %/\n<<set $load to ($load - 1)>>\n<<endsilently>>You pull <<print $description>> out of the cart. <<progress>>\n/% Is this a special garment? If so, have we already shown the message for this type of garment? If it is and we haven't, show a message.\n%/<<if $special_garment is true>><<if $owner is "you">><<if $special_you_garments.indexOf($garment) gte 0>>\n<<display special you garment>>\n<<endif>><<else>><<if $special_partner_garments.indexOf($garment) gte 0>>\n<<display special partner garment>>\n<<endif>><<endif>><<endif>>\n/%\nWe let the player decide what to do with this garment. choice is its own passage so that we can display it on other screens (notably the check passage). \n%/<<display choice>>\n\n[[Check care instructions.|check]]\n\n[[Just toss some things in the dryer.|toss]]
People can be so good-looking. It rocks. \n\nBut after a moment, you put your eyes back on the wet clothes in front of you. \n\n<<print $Partners>><<if $partner neq "They">>'s<<else>>'ve<<endif>> got work to do. As do you. \n\n[[Next.|cycle return]]\n\n<<set $scoped_a_cutie to true>>
Your partner's pronouns are:\n\n[[he/him|lover][$partner to "He"]]\n\n[[she/her|lover][$partner to "She"]]\n\n[[they/them|lover][$partner to "They"]]\n
You talk a little as you work about nothing in particular, and you also spend some of the time together in silence, forming orderly piles of warm laundry. \n\n[[Next.|happy ending]]
It's from a friend of yours.\n\n"you will never guess what just happened! i met that girl at the coffee shop near my place again and she straight up asked me out!!!" \n\nYou remember the girl in the coffee shop - they struck up a conversation about a book she was reading a few weeks ago and they seem to have the same schedule, so they keep meeting up. \n\n[[Reply now.|reply]]\n\n[[Reply later.|ignore]]\n\n<<set $text_count to 1>>
//That's ridiculous//, you want to tell <<$partnero>>, but instead you take a deep breath and try to absorb what <<$partners>><<if $partner neq "They">>'s<<else>>'re<<endif>> saying. And you decide that it kind of isn't.\n\n"Ok, I think I understand," you tell <<$partnero>>. "I do care about you. Next time I do laundry I'll be more careful." \n\n[[Next.|apologize4]]
Now you have to sort the clothes. \n\nAnything that's safe to machine dry, you should put in the dryer.\n\n(You're not washing any towels or sheets, only clothes, so you plan to put everything in one dryer and set it to low heat.)\n\nEverything else you should put in the basket, to bring home and hang or lay flat. \n\n[[Next.|cycle]]\n\n/% New music starts after this passage, so we start unlooping the current sound file now. This isn't necessarily very precise :/ %/\n<<unloopsound "Laundry Take 4 (Bass).mp3">>\n
<<unloopsound "Laundry Take 4 (Bass).mp3">>
(function () {\n "use strict";\n version.extensions['soundMacros'] = {\n major: 1,\n minor: 1,\n revision: 2\n };\n var p = macros['playsound'] = {\n soundtracks: {},\n handler: function (a, b, c, d) {\n var loop = function (m) {\n if (m.loop == undefined) {\n m.loopfn = function () {\n this.play();\n };\n m.addEventListener('ended', m.loopfn, 0);\n } else m.loop = true;\n m.play();\n };\n var s = eval(d.fullArgs());\n if (s) {\n s = s.toString();\n var m = this.soundtracks[s.slice(0, s.lastIndexOf("."))];\n if (m) {\n if (b == "playsound") {\n m.play();\n } else if (b == "loopsound") {\n loop(m);\n } else if (b == "pausesound") {\n m.pause();\n } else if (b == "unloopsound") {\n if (m.loop != undefined) {\n m.loop = false;\n } else if (m.loopfn) {\n m.removeEventListener('ended', m.loopfn);\n delete m.loopfn;\n }\n } else if (b == "stopsound") {\n m.pause();\n m.currentTime = 0;\n } else if (b == "fadeoutsound" || b == "fadeinsound") {\n if (m.interval) clearInterval(m.interval);\n if (b == "fadeinsound") {\n if (m.currentTime>0) return;\n m.volume = 0;\n loop(m);\n } else {\n if (!m.currentTime) return;\n m.play();\n }\n var v = m.volume;\n m.interval = setInterval(function () {\n v = Math.min(1, Math.max(0, v + 0.005 * (b == "fadeinsound" ? 1 : -1)));\n m.volume = Math.easeInOut(v);\n if (v == 0 || v == 1) clearInterval(m.interval);\n if (v == 0) {\n m.pause();\n m.currentTime = 0;\n m.volume = 1;\n }\n }, 10);\n }\n }\n }\n }\n }\n macros['fadeinsound'] = p;\n macros['fadeoutsound'] = p;\n macros['unloopsound'] = p;\n macros['loopsound'] = p;\n macros['pausesound'] = p;\n macros['stopsound'] = p;\n macros['stopallsound'] = {\n handler: function () {\n var s = macros.playsound.soundtracks;\n for (var j in s) {\n\t\tif (s.hasOwnProperty(j)) {\n s[j].pause();\n if (s[j].currentTime) {\n\t\t s[j].currentTime = 0;\n\t\t }\n\t\t}\n }\n }\n }\n var div = document.getElementById("storeArea").firstChild;\n var fe = ["ogg", "mp3", "wav", "webm"];\n while (div) {\n var b = String.fromCharCode(92);\n var q = '"';\n var re = "['" + q + "]([^" + q + "']*?)" + b + ".(ogg|mp3|wav|webm)['" + q + "]";\n k(new RegExp(re, "gi"));\n div = div.nextSibling;\n }\n\n function k(c, e) {\n do {\n var d = c.exec(div.innerHTML);\n if (d) {\n var a = new Audio();\n if (a.canPlayType) {\n for (var i = -1; i < fe.length; i += 1) {\n if (i >= 0) d[2] = fe[i];\n if (a.canPlayType("audio/" + d[2])) break;\n }\n if (i < fe.length) {\n a.setAttribute("src", d[1] + "." + d[2]);\n a.interval = null;\n macros.playsound.soundtracks[d[1]] = a;\n } else console.log("Browser can't play '" + d[1] + "'");\n }\n }\n } while (d);\n }\n}());
Cuties are cute. But you've still got laundry to do. \n\n[[Next.|cycle return]]
<<silently>>\n/%Statement checking how many garments are currently worn. %/\n<<set $kitchensink to $partner_blouses + $partner_bras + $partner_dresses + $partner_jeans + $partner_pants + $partner_shirts + $partner_skirts + $partner_socks + $partner_tanktops + $partner_tshirts + $partner_underwear>>\n/%\n\nOld code, disregard.\n\n<<if ($partner_blouses is true) and ($partner_bras is true) and ($partner_dresses is true) and ($partner_jeans is true) and ($partner_pants is true) and ($partner_shirts is true) and ($partner_skirts is true) and ($partner_socks is true) and ($partner_tanktops is true) and ($partner_tshirts is true) and ($partner_underwear is true)>><<set $kitchensink to true>>\n<<else>>\n<<set $kitchensink to false>>\n<<endif>>%/\n/% The pronouns passage takes the selected pronoun for the player's partner, and generates nominative, accusative and possessive forms. %/\n<<pronouns>>\n<<endsilently>>You are doing laundry for both yourself and your partner.\n\nSelect the kinds of clothes that <<$partners>> wear<<if $partner neq "They">>s<<endif>>:/%If the player hasn't selected every article, clothes the player has deselected will appear below under their own heading, followed by a link to the next screen. Otherwise, a link to the next screen appears immediately. \n%/\n\n<div class = "wearlist">//<<if $partner neq "They">>does<<else>>do<<endif>> wear//<<if $partner_blouses is true>> \n[[blouses|lover][$partner_blouses to false]]<<endif>><<if $partner_bras is true>>\n[[bras|lover][$partner_bras to false]]<<endif>><<if $partner_dresses is true>>\n[[dresses|lover][$partner_dresses to false]]<<endif>><<if $partner_jeans is true>>\n[[jeans|lover][$partner_jeans to false]]<<endif>><<if $partner_pants is true>>\n[[pants|lover][$partner_pants to false]]<<endif>><<if $partner_shirts is true>>\n[[shirts|lover][$partner_shirts to false]]<<endif>><<if $partner_skirts is true>>\n[[skirts|lover][$partner_skirts to false]]<<endif>><<if $partner_socks is true>>\n[[socks|lover][$partner_socks to false]]<<endif>><<if $partner_tanktops is true>>\n[[tank tops|lover][$partner_tanktops to false]]<<endif>><<if $partner_tshirts is true>>\n[[t-shirts|lover][$partner_tshirts to false]]<<endif>><<if $partner_underwear is true>>\n[[underwear|lover][$partner_underwear to false]]<<endif>></div>/%\n%/<div class="nowearlist">//<<if $partner neq "They">>does<<else>>do<<endif>> not wear//<<if $partner_blouses is false>>\n[[blouses|lover][$partner_blouses to true]]<<endif>><<if $partner_bras is false>>\n[[bras|lover][$partner_bras to true]]<<endif>><<if $partner_dresses is false>>\n[[dresses|lover][$partner_dresses to true]]<<endif>><<if $partner_jeans is false>>\n[[jeans|lover][$partner_jeans to true]]<<endif>><<if $partner_pants is false>>\n[[pants|lover][$partner_pants to true]]<<endif>><<if $partner_shirts is false>>\n[[shirts|lover][$partner_shirts to true]]<<endif>><<if $partner_skirts is false>>\n[[skirts|lover][$partner_skirts to true]]<<endif>><<if $partner_socks is false>>\n[[socks|lover][$partner_socks to true]]<<endif>><<if $partner_tanktops is false>>\n[[tank tops|lover][$partner_tanktops to true]]<<endif>><<if $partner_tshirts is false>>\n[[t-shirts|lover][$partner_tshirts to true]]<<endif>><<if $partner_underwear is false>>\n[[underwear|lover][$partner_underwear to true]]<<endif>></div>/%\n%/<div class = "listchoices"><<if $kitchensink gt 0>>[[Next.|lover_confirm]]<<endif>></div>
Check check [[soundcheck2]]\n\n<<loopsound "Laundry Take 4 (Bass).mp3">>
<<silently>>\n<<set $basket_mistakes to ($basket_mistakes_partner.length + $basket_mistakes_you.length)>>\n<<set $dryer_mistakes to ($dryer_mistakes_partner.length + $dryer_mistakes_you.length)>>\n<<set $mistakes to $basket_mistakes + $dryer_mistakes>>\n<<endsilently>>Thanks for playing The Laundry. \n\n<<if $scoped_a_cutie is true>>You scoped a real cutie.<<else if $glimpsed_a_cutie is true>>You glimpsed a real cutie.<<else>>You missed a cutie.<<endif>>\n\n<<if $text_advice is "question">>You asked a friend a thoughtful question.<<else if ($text_advice is "yes") or ($text_advice is "no")>>You gave a friend advice.<<else if $text_done is "true">>You put your phone down and focused on what you were doing.<<else if $text_count gt 0>>You heard from a friend.<<else>>You didn't hear from a friend.<<endif>>\n\nYou made <<print $mistakes>> mistakes in sorting the laundry, including putting <<print $dryer_mistakes>> thing<<if $dryer_mistakes gt 1>>s<<endif>> in the dryer that might have been damaged. \n\nYou got <<if $ending is 1>>Ending #1 - Good Night<<else if $ending is 2>>Ending #2 - Another Day<<else if $ending is 3>>Ending # 3 - Feeling Better<<endif>>.\n\n[[Play again|Start][state.restart()]]\n\nWords and Programming - David Rogers\nOriginal Music - Chris Larson\nSpecial thanks - Lindsay Eagle, Emerald Kushnier, Jamie Sabriel Flez, William Schueller, Sam Backus, Andrew Lynch\nLaundry buzzer courtesy of <a href="http://www.freesound.org/people/nofeedbak/">nofeedbak</a>, via <a href="http://freesound.org">www.freesound.org</a>.\n
What's the worst that can happen? You throw <<print $description>> into the dryer, and toss a few other things in after it. \n\n[[Next.|cycle]]\n\n<<display dryer mistake>>\n<<set $time to $time + 1>>\n<<set $load to $load - 5>>\n<<if $load lt 0>>\n<<set $load to 0>>\n<<endif>>\n<<set $tossing to true>>\n<<display description looper>>\n<<display dryer mistake>>\n<<display description looper>>\n<<display dryer mistake>>\n<<display description looper>>\n<<display dryer mistake>>\n<<display description looper>>\n<<display dryer mistake>>\n<<set $tossing to false>>
"Hey, don't beat yourself up. Why don't you go relax for a while before bed? I can finish up here."\n\nYou take <<$partnero>> up on the offer, and go do something to unwind while <<$partners>> finish<<if $partner neq "They">>es<<endif>> sorting and putting away the laundry. \n\n[[Next.|feeling better]]
/* Your story will use the CSS in this passage to style the page.\nGive this passage more tags, and it will only affect passages with those tags.\nExample selectors: */\n\nbody {\n font-size: 12pt;\n font-family: Georgia, Serif;\n color: rgb(0,0,0);\n background-color: rgb(255,255,255);\n\t\n}\n.passage {\n}\n\t\n\t\n}\n.passage a {\n color: rgb(0,0,200); }\n\t\n\t\n}\n.passage a:hover {\n\t/* This affects links while the cursor is over them */\n\t\n\t\n}\n\n#sidebar {display: none;}\n\n#passages {\n\tmargin-left: 0; \n\tborder-left: 0; \n\tpadding-left: 0; }\n\n.revision-span-in {\n\topacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n\ttransition: 1s; -webkit-transition: 1s;\n}\n.revision-span-out {\n\tposition:absolute;\n\topacity: 0;\n}\n\n.wearlist {\n\tfloat:left;\n\toverflow:hidden;\n\tpadding: 1%;\n\twidth: 20%;\n}\n.nowearlist {\n\tfloat:left;\n\toverflow:hidden;\n\tpadding: 1%;\n\twidth: 20%;\n}\n\n.listchoices {\n\tclear:left;\n}
/% The narrative section at the end of the game comments on any specific garments that were put in the dryer but shouldn't have been. To allow this, we need to record some info about each garment like this.%/<<silently>>\n<<if $direction is "line dry">>\n/% $tuple is used to capture the unique info from this turn, so we reset it to an empty array in case there's any data from a previous turn. %/\n<<set $tuple to []>>\n<<if $owner is "you">>\n/% We use the $article variable, which is used in the description as a step toward generating $description, because that's how we'll refer to the garments at the end of the game ("dark red shirt" instead of "your partner's dark red shirt")%/\n<<set $tuple.push($article)>>\n<<set $tuple.push($plural)>>\n/%Add both article and plural to $tuple, so we know what the garment is and how to treat it grammatically, and then add $tuple to the array of dryer mistakes. %/\n<<set $dryer_mistakes_you.push($tuple)>>\n<<else>>\n/%Same as above, for partner list instead of you list. %/\n<<set $tuple.push($article)>>\n<<set $tuple.push($plural)>>\n<<set $dryer_mistakes_partner.push($tuple)>>\n<<endif>><<endif>><<endsilently>>
/% Back in the description passage we set $direction to determine whether the garment belongs in the dryer. Now we convert that into something that fits the fiction of the world. We generate a random number and use it to choose which of several equivalent messages to show.\n%/<<silently>>\n<<set $random to either ($randomizer)>>\n<<set $time to $time + 1>>\n<<endsilently>>You look for the tag with care instructions on <<print $description>>.\n\n<<if $garment is "socks">>You can't seem to find one. Socks never seem to have one, come to think of it. You feel a little silly for looking.\n<<else if $random lte 1>>/%\nIt's possible that there is no tag that tells the player what to do.\n%/You can't seem to find one. Maybe it fell off at some point. You'll have to guess.\n<<else>>The tag says <<if $direction is "line dry">><<if $random lte 3>>"Line dry."<<else if $random lte 6>>"Dry flat."<<else>>"Do not tumble dry."<<endif>>\n<<else>><<if $random lte 3>>"Tumble Dry Low"<<else if $random lte 6>>"Tumble Dry Medium"<<else>>"Machine Dry"<<endif>>\n<<endif>><<endif>>/% \nThe player still has to choose what the do with this garment. So we display choice again.%/\n<<display choice>>
You're done.\n\nYou feed a handful of quarters into the dryer, start the dry cycle, and leave with the basket.\n\n[[Next.|end1.5]]\n\n
<<if $dryer_mistakes_you.length is 1>>"Ah, crap."\n\nYour partner looks over and sees the problem at once. "Oh, shoot. That shouldn't go through the dryer."\n\n"Yeah, I know that //now//." \n\n"Sorry." <<print $Partners>> shake<<if $partner neq "They">>s<<endif>> <<print $partnerp>> head. "Not very helpful. That really sucks."\n\nYou sigh. "It could be worse." \n\n[[Next.|happy ending]]\n<<else>>"Damn it." You take a deep breath as you add a third garment to the pile of ruined clothes. \n\n"That really sucks," your partner says. \n\n"I'm just so pissed at myself," you say, shaking your head.\n\n[[Next.|beat yourself up]]\n<<endif>>
What does <<if $test is "he">>[[he|test][$test to "she"]]<<else if $test is "she">>[[she|test][$test to "they"]]<<else>>[[they|test][$test to "he"]]<<endif>> wear?\n\nDresses <<if $dress is true>>Yes [[toggle|test][$dress to false]]<<else>>No [[toggle|test][$dress to true]]<<endif>>\nSkirt <<if $skirt is true>>Yes [[toggle|test][$skirt to false]]<<else>>No [[toggle|test][$skirt to true]]<<endif>>\nPants <<if $pants is true>>Yes [[toggle|test][$pants to false]]<<else>>No [[toggle|test][$pants to true]]<<endif>>\nSocks <<if $socks is true>>Yes [[toggle|test][$socks to false]]<<else>>No [[toggle|test][$socks to true]]<<endif>>\n
/%Displays a menu to the player allowing them to pick their partner's preferred pronoun (he, she, they) and tailor what garments their partner wears (within a limited predefined list of garments).\n%/<<silently>>\n/%Statement checking how many garments are currently worn. %/\n<<set $kitchensink to $partner_blouses + $partner_bras + $partner_dresses + $partner_jeans + $partner_pants + $partner_shirts + $partner_skirts + $partner_socks + $partner_tanktops + $partner_tshirts + $partner_underwear>>\n/%<<if ($partner_blouses is true) and ($partner_bras is true) and ($partner_dresses is true) and ($partner_jeans is true) and ($partner_pants is true) and ($partner_shirts is true) and ($partner_skirts is true) and ($partner_socks is true) and ($partner_tanktops is true) and ($partner_tshirts is true) and ($partner_underwear is true)>><<set $kitchensink to true>>\n<<else>>\n<<set $kitchensink to false>>\n<<endif>>%/\n<<endsilently>><<nobr>>\n/%Provides links, with appropriate verbs, that allow the player to toggle partner's preferred pronoun. \n\nClicking the link reloads the page and changes the variable to change the link the player sees.%/\n<<if $partner is "He">>[[He|lover][$partner to "She"]] wears\n\n<<else if $partner is "She">>[[She|lover][$partner to "They"]] wears\n\n<<else>>[[They|lover][$partner to "He"]] wear<<endif>>:\n<<endnobr>><<if $partner_blouses is true>> \n[[blouses|lover][$partner_blouses to false]]<<endif>><<if $partner_bras is true>>\n[[bras|lover][$partner_bras to false]]<<endif>><<if $partner_dresses is true>>\n[[dresses|lover][$partner_dresses to false]]<<endif>><<if $partner_jeans is true>>\n[[jeans|lover][$partner_jeans to false]]<<endif>><<if $partner_pants is true>>\n[[pants|lover][$partner_pants to false]]<<endif>><<if $partner_shirts is true>>\n[[shirts|lover][$partner_shirts to false]]<<endif>><<if $partner_skirts is true>>\n[[skirts|lover][$partner_skirts to false]]<<endif>><<if $partner_socks is true>>\n[[socks|lover][$partner_socks to false]]<<endif>><<if $partner_tanktops is true>>\n[[tank tops|lover][$partner_tanktops to false]]<<endif>><<if $partner_tshirts is true>>\n[[t-shirts|lover][$partner_tshirts to false]]<<endif>><<if $partner_underwear is true>>\n[[underwear|lover][$partner_underwear to false]]<<endif>>\n\n/%If the player hasn't selected every article, clothes the player has deselected will appear below under their own heading, followed by a link to the next screen. Otherwise, a link to the next screen appears immediately. \n%/<<if $kitchensink neq 11>>And <<if $partner neq "They">> doesn't<<else>>don't<<endif>> wear:<<if $partner_blouses is false>>\n[[blouses|lover][$partner_blouses to true]]<<endif>><<if $partner_bras is false>>\n[[bras|lover][$partner_bras to true]]<<endif>><<if $partner_dresses is false>>\n[[dresses|lover][$partner_dresses to true]]<<endif>><<if $partner_jeans is false>>\n[[jeans|lover][$partner_jeans to true]]<<endif>><<if $partner_pants is false>>\n[[pants|lover][$partner_pants to true]]<<endif>><<if $partner_shirts is false>>\n[[shirts|lover][$partner_shirts to true]]<<endif>><<if $partner_skirts is false>>\n[[skirts|lover][$partner_skirts to true]]<<endif>><<if $partner_socks is false>>\n[[socks|lover][$partner_socks to true]]<<endif>><<if $partner_tanktops is false>>\n[[tank tops|lover][$partner_tanktops to true]]<<endif>><<if $partner_tshirts is false>>\n[[t-shirts|lover][$partner_tshirts to true]]<<endif>><<if $partner_underwear is false>>\n[[underwear|lover][$partner_underwear to true]]<<endif>>\n\n<<if $kitchensink gt 0>>[[That's right...|you]]<<endif>>\n<<else>>[[That's right...|you]]<<endif>>
<<silently>>\n<<set $kitchensink to $you_blouses + $you_bras + $you_dresses + $you_jeans + $you_pants + $you_shirts + $you_skirts + $you_socks + $you_tanktops + $you_tshirts + $you_underwear>>\n/%\n<<if ($you_blouses is true) and ($you_bras is true) and ($you_dresses is true) and ($you_jeans is true) and ($you_pants is true) and ($you_shirts is true) and ($you_skirts is true) and ($you_socks is true) and ($you_tanktops is true) and ($you_tshirts is true) and ($you_underwear is true)>><<set $kitchensink to true>><<else>> <<set $kitchensink to false>>\n<<endif>>%/\n<<endsilently>>Select the kinds of clothes that you wear:\n\n<div class = "wearlist">//do wear//<<if $you_blouses is true>> \n[[blouses|you][$you_blouses to false]]<<endif>><<if $you_bras is true>>\n[[bras|you][$you_bras to false]]<<endif>><<if $you_dresses is true>>\n[[dresses|you][$you_dresses to false]]<<endif>><<if $you_jeans is true>>\n[[jeans|you][$you_jeans to false]]<<endif>><<if $you_pants is true>>\n[[pants|you][$you_pants to false]]<<endif>><<if $you_shirts is true>>\n[[shirts|you][$you_shirts to false]]<<endif>><<if $you_skirts is true>>\n[[skirts|you][$you_skirts to false]]<<endif>><<if $you_socks is true>>\n[[socks|you][$you_socks to false]]<<endif>><<if $you_tanktops is true>>\n[[tank tops|you][$you_tanktops to false]]<<endif>><<if $you_tshirts is true>>\n[[t-shirts|you][$you_tshirts to false]]<<endif>><<if $you_underwear is true>>\n[[underwear|you][$you_underwear to false]]<<endif>></div>/%\n%/<div class="nowearlist">//do not wear//<<if $you_blouses is false>>\n[[blouses|you][$you_blouses to true]]<<endif>><<if $you_bras is false>>\n[[bras|you][$you_bras to true]]<<endif>><<if $you_dresses is false>>\n[[dresses|you][$you_dresses to true]]<<endif>><<if $you_jeans is false>>\n[[jeans|you][$you_jeans to true]]<<endif>><<if $you_pants is false>>\n[[pants|you][$you_pants to true]]<<endif>><<if $you_shirts is false>>\n[[shirts|you][$you_shirts to true]]<<endif>><<if $you_skirts is false>>\n[[skirts|you][$you_skirts to true]]<<endif>><<if $you_socks is false>>\n[[socks|you][$you_socks to true]]<<endif>><<if $you_tanktops is false>>\n[[tank tops|you][$you_tanktops to true]]<<endif>><<if $you_tshirts is false>>\n[[t-shirts|you][$you_tshirts to true]]<<endif>><<if $you_underwear is false>>\n[[underwear|you][$you_underwear to true]]<<endif>></div>\n\n<div class = "listchoices"><<if $kitchensink gt 0>>[[Next.|you_confirm]]<<endif>></div>
/% description generates $description, which is a unqiue description of a piece of clothing, e.g. "your dark red shirt" \n%/<<silently>>\n/% pick a shade and color %/\n<<set $shade to either($shades)>>\n<<set $color to either($colors)>>\n/% decide whether this is you or your partner's garment, and then choose a garment from their list of garments %/\n<<set $owner to either("partner","you")>>\n<<if $owner is "partner">>\n<<set $special_garments to $partner_garments>>\n<<set $garment to either($partner_garments)>>\n<<else>>\n<<set $special_garments to $you_garments>>\n<<set $garment to either($you_garments)>>\n<<endif>>\n/% specifying shade sounds weird for black or white, so we have special logic for that case here. %/\n<<if ($color neq "black ") and ($color neq "white ")>>\n<<set $article to $shade + $color + $garment>>\n<<else>>\n<<set $article to $color + $garment>>\n<<endif>>\n/% now add a possessive based on who's clothing it is. %/\n<<if $owner is "you">>\n<<set $description to "your " + $article>>\n<<else>>\n<<set $description to "your partner's " + $article>>\n<<endif>>\n<<endsilently>>/%\n$deduper is an array populated with every description that's been generated so far. $deduper is an empty array when created in Start. We check to see if our description matches anything in $deduper. If it does, we display description looper passage, when then displays this passage to start the process again. It's an imitation while loop.\n%/<<if $deduper.indexOf($description) gte 0>><<display description looper>>\n<<else>><<silently>>/% if our description is not in $deduper, we add it to $deduper for next time. %/\n<<set $deduper.push($description)>> /%\npassage directions decides, based on type of garment, whether garment can go in the dryer.\n%/<<display directions>>\n/% \npassage plural identifies whether this garment is treated as a plural, like "pants" or a singular.\n%/<<display plural>>\n<<endsilently>>/%\nIf the player tosses several garments into the dryer at once, the $tossing variable will be true, and this passage doesn't lead anywhere. This is so that it can be called several times in succession within the toss passage, so the game knows what garments were tossed and whether any mistakes were made.\n\nOtherwise, we move on to displaying the player's choice of what to do with our garment.\n%/<<if $tossing neq true>><<display basic>><<endif>><<endif>>
/%Here we branch out to the cutie and text passages, if the RNG is sending us to those event. %/<<if $cutie is true>><<display cutie>><<else if $text is true>><<display text>><<else>><<display cycle>><<endif>>
/% This is called cycle because it's the beginning of the loop that is the heart of the game.\n\nFirst, we check to see if there are still clothes left to sort. If there aren't, the game is over.%/<<if $load is 0>><<display end>>/%\n\nAt the moment, a special message emphasizing the passage of time will show when time is 12 and 25. This is to add a sense of urgency or impatience that migh encourage the player to make an avoidable mistake, adding an element of choice. \n\nIncidentally timepassing is set to true on the passages linked to from here, so that they don't advance time but they don't trigger twice.\n\nI'm not sure if I like this.\n\n%/<<else if ($time is 12) and ($timepassing is false)>><<display time twelve>><<else if ($time is 25) and ($timepassing is false)>><<display time twenty five>>/%\n\nIf this is your first time to cycle, then there's some code to help transition the sound, and we move on without checking for a random event. A random event wouldn't be meaningful without having been through the normal cycle once.\n\n%/<<else if $initial is true>><<stopallsound>><<loopsound "Laundry Take 4 (Full).mp3">><<set $initial to false>><<display description looper>>/%\n\nOtherwise, we test to see if there's a random event. There is 60% of the time. In that case, we go to the event passage to see what kind of event. We need to to this check now because there are two places in the coming cycle where the event could show up. \n\n%/<<else>><<set $random to either($randomizer)>><<if $random gt 4>><<display specialevent>><<endif>>/%\n\nNow we move on to description looper, which will generate our unique garment for this loop. We set timepassing to false here so we can trigger the next passage that relies on it at the appropriate $time.\n\n%/<<set $timepassing to false>><<display description looper>><<endif>>
"I'm not 100% sure we washed <<if $dryer_mistakes_partner[0][1] is true>>them<<else>>it<<endif>>," you say. "I bet we didn't."\n\n"Ok..." But you can see they aren't convinced. Nonetheless, you finish up without further discussion, and then <<if $time lt 30>>the two of <<endif>>you go eat. \n\n[[Next.|screwed up]]
<<silently>>\n<<set $description to "Lindsay's short skirt">>\n<<set $garment to "skirt">>\n<<set $direction to "dryer">>\n<<set $randomizer to [1,2,3,4,5,6,7,8,9,10]>>\n<<endsilently>><<display check>>\n\n[[Again|check test]]\n
/%This case is complex enough that I broke it into its own passage.%/<<display dryer mistake>><<set $time to $time + 1>><<display huh>>
/% Player has decided to put a dryer item in the basket. This isn't a huge deal. We note it, but there's not as much info as there is for the other case (see dryer passage).\n%/<<silently>>\n<<if $direction is "dryer">>\n<<set $basket_mistakes.push($description)>>\n<<endif>>\n<<set $time to $time + 1>>\n<<endsilently>><<display huh>>\n