*comment Work out which order to show the epilogues
*comment Max two partners are possible according to simulations
*comment Show from lightest to heaviest. Heaviest is partners, then order by friendship
*temp display_date_string ""
*temp first_char ""
*temp second_char ""
*temp third_char ""
*temp fourth_char ""
*temp eric_higher_than_katie false
*temp eric_higher_than_danny false
*temp eric_higher_than_chloe false
*temp katie_higher_than_danny false
*temp katie_higher_than_chloe false
*temp danny_higher_than_chloe false
*if (eric_friendship > katie_friendship)
    *set eric_higher_than_katie true
*if (eric_friendship > danny_friendship)
    *set eric_higher_than_danny true
*if (eric_friendship > chloe_friendship)
    *set eric_higher_than_chloe true
*if (katie_friendship > danny_friendship)
    *set katie_higher_than_danny true
*if (katie_friendship > chloe_friendship)
    *set katie_higher_than_chloe true
*if (danny_friendship > chloe_friendship)
    *set danny_higher_than_chloe true
*if (eric_partner)
    *if (katie_partner)
        *if (eric_higher_than_katie)
            *set fourth_char "Eric"
            *set third_char "Katie"
        *else
            *set fourth_char "Katie"
            *set third_char "Eric"
        *if (danny_higher_than_chloe)
            *set second_char "Danny"
            *set first_char "Chloe"
        *else
            *set second_char "Chloe"
            *set first_char "Danny"
    *elseif (chloe_partner)
        *if (eric_higher_than_chloe)
            *set fourth_char "Eric"
            *set third_char "Chloe"
        *else
            *set fourth_char "Chloe"
            *set third_char "Eric"
        *if (katie_higher_than_danny)
            *set second_char "Katie"
            *set first_char "Danny"
        *else
            *set second_char "Danny"
            *set first_char "Katie"
    *else
        *set fourth_char "Eric"
        *if ((katie_higher_than_chloe) and (danny_higher_than_chloe))
            *comment Chloe lowest friendship
            *set first_char "Chloe"
            *if (katie_higher_than_danny)
                *set third_char "Katie"
                *set second_char "Danny"
            *else
                *set third_char "Danny"
                *set second_char "Katie"
        *elseif ((katie_higher_than_danny) and (not(danny_higher_than_chloe)))
            *comment Danny lowest friendship
            *set first_char "Danny"
            *if (katie_higher_than_chloe)
                *set third_char "Katie"
                *set second_char "Chloe"
            *else
                *set third_char "Chloe"
                *set second_char "Katie"
        *elseif ((not(katie_higher_than_danny)) and (not(katie_higher_than_chloe)))
            *comment Katie lowest friendship
            *set first_char "Katie"
            *if (danny_higher_than_chloe)
                *set third_char "Danny"
                *set second_char "Chloe"
            *else
                *set third_char "Chloe"
                *set second_char "Danny"
        *else
            *bug Incomplete assignment of characters
*elseif (katie_partner)
    *if (chloe_partner)
        *if (katie_higher_than_chloe)
            *set fourth_char "Katie"
            *set third_char "Chloe"
        *else
            *set fourth_char "Chloe"
            *set third_char "Katie"
        *if (eric_higher_than_danny)
            *set second_char "Eric"
            *set first_char "Danny"
        *else
            *set second_char "Danny"
            *set first_char "Eric"
    *else
        *set fourth_char "Katie"
        *if ((eric_higher_than_chloe) and (danny_higher_than_chloe))
            *comment Chloe lowest friendship
            *set first_char "Chloe"
            *if (eric_higher_than_danny)
                *set third_char "Eric"
                *set second_char "Danny"
            *else
                *set third_char "Danny"
                *set second_char "Eric"
        *elseif ((eric_higher_than_danny) and (not(danny_higher_than_chloe)))
            *comment Danny lowest friendship
            *set first_char "Danny"
            *if (eric_higher_than_chloe)
                *set third_char "Eric"
                *set second_char "Chloe"
            *else
                *set third_char "Chloe"
                *set second_char "Eric"
        *elseif ((not(eric_higher_than_danny)) and (not(eric_higher_than_chloe)))
            *comment Eric lowest friendship
            *set first_char "Eric"
            *if (danny_higher_than_chloe)
                *set third_char "Danny"
                *set second_char "Chloe"
            *else
                *set third_char "Chloe"
                *set second_char "Danny"
        *else
            *bug Incomplete assignment of characters
*elseif (chloe_partner)
    *set fourth_char "Chloe"
    *if ((eric_higher_than_katie) and (not(katie_higher_than_danny)))
        *comment Katie lowest friendship
        *set first_char "Katie"
        *if (eric_higher_than_danny)
            *set third_char "Eric"
            *set second_char "Danny"
        *else
            *set third_char "Danny"
            *set second_char "Eric"
    *elseif ((eric_higher_than_danny) and (katie_higher_than_danny))
        *comment Danny lowest friendship
        *set first_char "Danny"
        *if (eric_higher_than_katie)
            *set third_char "Eric"
            *set second_char "Katie"
        *else
            *set third_char "Katie"
            *set second_char "Eric"
    *elseif ((not(eric_higher_than_danny)) and (not(eric_higher_than_katie)))
        *comment Eric lowest friendship
        *set first_char "Eric"
        *if (katie_higher_than_danny)
            *set third_char "Katie"
            *set second_char "Danny"
        *else
            *set third_char "Danny"
            *set second_char "Katie"
    *else
        *bug Incomplete assignment of characters
*else
    *comment No partner, assign in order of friendship
    *if (((eric_higher_than_danny) and (eric_higher_than_katie)) and (eric_higher_than_chloe))
        *set fourth_char "Eric"
        *if ((katie_higher_than_danny) and (katie_higher_than_chloe))
            *set third_char "Katie"
            *if (danny_higher_than_chloe)
                *set second_char "Danny"
                *set first_char "Chloe"
            *else
                *set second_char "Chloe"
                *set first_char "Danny"
        *elseif ((not(katie_higher_than_danny)) and (danny_higher_than_chloe))
            *set third_char "Danny"
            *if (katie_higher_than_chloe)
                *set second_char "Katie"
                *set first_char "Chloe"
            *else
                *set second_char "Chloe"
                *set first_char "Katie"
        *elseif ((not(katie_higher_than_chloe)) and (not(danny_higher_than_chloe)))
            *set third_char "Chloe"
            *if (katie_higher_than_danny)
                *set second_char "Katie"
                *set first_char "Danny"
            *else
                *set second_char "Danny"
                *set first_char "Katie"
        *else
            *bug Incomplete assignment of characters
    *elseif (((not(eric_higher_than_katie)) and (katie_higher_than_danny)) and (katie_higher_than_chloe))
        *set fourth_char "Katie"
        *if ((eric_higher_than_danny) and (eric_higher_than_chloe))
            *set third_char "Eric"
            *if (danny_higher_than_chloe)
                *set second_char "Danny"
                *set first_char "Chloe"
            *else
                *set second_char "Chloe"
                *set first_char "Danny"
        *elseif ((not(eric_higher_than_danny)) and (danny_higher_than_chloe))
            *set third_char "Danny"
            *if (eric_higher_than_chloe)
                *set second_char "Eric"
                *set first_char "Chloe"
            *else
                *set second_char "Chloe"
                *set first_char "Eric"
        *elseif ((not(eric_higher_than_chloe)) and (not(danny_higher_than_chloe)))
            *set third_char "Chloe"
            *if (eric_higher_than_danny)
                *set second_char "Eric"
                *set first_char "Danny"
            *else
                *set second_char "Danny"
                *set first_char "Eric"
        *else
            *bug Incomplete assignment of characters
    *elseif (((not(eric_higher_than_danny)) and (not(katie_higher_than_danny))) and (danny_higher_than_chloe))
        *set fourth_char "Danny"
        *if ((eric_higher_than_katie) and (eric_higher_than_chloe))
            *set third_char "Eric"
            *if (katie_higher_than_chloe)
                *set second_char "Katie"
                *set first_char "Chloe"
            *else
                *set second_char "Chloe"
                *set first_char "Katie"
        *elseif ((not(eric_higher_than_katie)) and (katie_higher_than_chloe))
            *set third_char "Katie"
            *if (eric_higher_than_chloe)
                *set second_char "Eric"
                *set first_char "Chloe"
            *else
                *set second_char "Chloe"
                *set first_char "Eric"
        *elseif ((not(eric_higher_than_chloe)) and (not(katie_higher_than_chloe)))
            *set third_char "Chloe"
            *if (eric_higher_than_katie)
                *set second_char "Eric"
                *set first_char "Katie"
            *else
                *set second_char "Katie"
                *set first_char "Eric"
        *else
            *bug Incomplete assignment of characters
    *elseif (((not(eric_higher_than_chloe)) and (not(katie_higher_than_chloe))) and (not(danny_higher_than_chloe)))
        *set fourth_char "Chloe"
        *if ((eric_higher_than_danny) and (eric_higher_than_katie))
            *set third_char "Eric"
            *if (katie_higher_than_danny)
                *set second_char "Katie"
                *set first_char "Danny"
            *else
                *set second_char "Danny"
                *set first_char "Katie"
        *elseif ((not(eric_higher_than_danny)) and (not(katie_higher_than_danny)))
            *set third_char "Danny"
            *if (eric_higher_than_katie)
                *set second_char "Eric"
                *set first_char "Katie"
            *else
                *set second_char "Katie"
                *set first_char "Eric"
        *elseif ((not(eric_higher_than_katie)) and (katie_higher_than_danny))
            *set third_char "Katie"
            *if (eric_higher_than_danny)
                *set second_char "Eric"
                *set first_char "Danny"
            *else
                *set second_char "Danny"
                *set first_char "Eric"
        *else
            *bug Incomplete assignment of characters
    *else
        *bug Incomplete assignment of characters
Epilogue
*achieve game_completed
*gosub_scene utils check_and_show_achievements

*page_break
*comment Bob
*gosub bob_snapshot
*comment Conditional Queenie
*if (chapter_8_fight)
    *gosub queenie_snapshot
*comment James
*gosub james_snapshot
*comment Camille
*gosub camille_snapshot
*comment Fight circuit
*gosub circuit_snapshot
*comment Office
*gosub office_snapshot
*comment Coach Lam
*gosub mkfight_snapshot
*comment Least friendship char
*set display_date_string "Saturday, 5 April 2025"
*if first_char = "Eric"
    *gosub eric_snapshot
*elseif first_char = "Katie"
    *gosub katie_snapshot
*elseif first_char = "Danny"
    *gosub danny_snapshot
*elseif first_char = "Chloe"
    *gosub chloe_snapshot
*else
    *bug Invalid first_char
*comment Second-least friendship char
*set display_date_string "Saturday, 12 April 2025"
*if second_char = "Eric"
    *gosub eric_snapshot
*elseif second_char = "Katie"
    *gosub katie_snapshot
*elseif second_char = "Danny"
    *gosub danny_snapshot
*elseif second_char = "Chloe"
    *gosub chloe_snapshot
*else
    *bug Invalid second_char
*comment Third-least friendship char
*set display_date_string "Saturday, 19 April 2025"
*if third_char = "Eric"
    *gosub eric_snapshot
*elseif third_char = "Katie"
    *gosub katie_snapshot
*elseif third_char = "Danny"
    *gosub danny_snapshot
*elseif third_char = "Chloe"
    *gosub chloe_snapshot
*else
    *bug Invalid third_char
*comment Most friendship char
*set display_date_string "Saturday, 26 April 2025"
*if fourth_char = "Eric"
    *gosub eric_snapshot
*elseif fourth_char = "Katie"
    *gosub katie_snapshot
*elseif fourth_char = "Danny"
    *gosub danny_snapshot
*elseif fourth_char = "Chloe"
    *gosub chloe_snapshot
*else
    *bug Invalid fourth_char
[b]END[/b]

[i]Below the Skyline[/i]

*page_break
For the ones in Hong Kong who keep showing up.

*page_break
*check_achievements
*temp chars_done 0
*if (choice_achieved_eric)
    *set chars_done +1
*if (choice_achieved_katie)
    *set chars_done +1
*if (choice_achieved_danny)
    *set chars_done +1
*if (choice_achieved_chloe)
    *set chars_done +1

You've completed one path through the underground circuit.
*if (chars_done < 4)
    Other stories remain.

[i]Some bonus scenes have been unlocked depending on the choices you made. These are accessible by starting a new game.[/i]

Thanks for playing!
*gosub_scene statdump statdump
*ending

*label bob_snapshot
Bob "Ichigeki" Chow

Saturday, 22 February 2025

"HYAH!"

Bob turns his hip and his cocked fist pistons out. His gi sleeve snaps. He pulls his fist back and stands up straight.

"Good form, Bob. Snap the hip through."

"Yes, sensei."

The students, a mix of white, yellow, and orange belts, run more drills, then split off for kata. Bob learns the next three moves — back stances and knife hands — and then pairs up for one-step sparring.

Sparring over, the class stretches together. Then the students kneel, facing the sensei. Bow to the dojo. Bow to the sensei.

"Oss!"

As the other students shuffle out, a senior waits until the sensei is at the water dispenser. He pats Bob on the shoulder. "Still can't believe you actually went through with it."

Bob looks down at his feet. "I hope I get another chance soon."

"Anything yet?"

Bob shakes his head. "Maybe next month."

"Hope so. Keep up the training. You've been working hard. See you next week." 

The two of them head out, where a dozen students already wait in their belts and gis.

*page_break
*return

*label queenie_snapshot
Queenie "Freestyle" Wai

Saturday, 8 March 2025

Before dawn, the Tseung Kwan O Industrial Estate, wide roads and silent loading bays and buildings in dark glass. At an abandoned factory off Chun Choi Street, three figures in dark long sleeves and gloves, faces wrapped, torches off and cameras stowed, scale the metal fencing.

Past the "No Trespassing" sign on the door is a large atrium, walls of square glass blocks and marble panels, and a reception counter with a stone top in the centre. Waist-high metal pillars stand in a row across the floor, plastic panels between them, dust on the tops. Queenie puts a hand on a pillar and swings her legs over the plastic. The two men squeeze through the gap beside them. They take the stairs up a floor, and push the doors open. Darkness and silence.

The white beams of torchlight land on linoleum floors, private offices along the walls, chairs still at desks. Rows and rows of open steel shelving above head height, and banks of metal cabinets behind. Cubicles panelled in sky blue, an LCD monitor on every desk.

One of the men crosses to the cabinets and pulls a drawer open. Newspaper cuttings brown at the folds, photo envelopes, empty space behind them. Queenie raises a hand. He closes the drawer.

The three of them go past the canteen down to the factory floor. Nothing remains but the pillars, the ducting overhead, and bolts in the concrete, laid out in squares. The sun comes in low through the high windows, and lies across the floor in stripes.

They go out through a side door into the yard. One man photographs the loading bay, the painted numbers peeling. The other backs up until he has the whole building. Queenie turns to the sun. A dozen pigeons cross the frame, but she takes the shot.

*page_break
*return

*label james_snapshot
James Yeung

Monday, 10 March 2025

On Ka Yip Street, Chai Wan, sits the Mercedes-Benz regional office and showroom, next to the breakwater and the green water and the barges and the containers. Through the showroom and café, up to the fifth floor. A private office is at the end, past rows of cubicles. On the desk next to a framed photo is a nameplate: "YEUNG Ka-wing, James. Controller". A dirty gym bag is propped against the side of the desk, gloves peeking out.

James has the phone clamped between his ear and his shoulder. In his hands, an A4 printout, columns of figures and bar charts, and in front of him a spreadsheet on one monitor, calendar on the other. The door is closed.

"It's unavoidable. Market is going to EVs even after they cut the FRT waiver. We are still running the campaign but demand is not moving. Young rich want Chinese marques."

He puts the printout down and takes the phone in his hand, and straightens his neck. His lips thin as the voice on the line goes on.

"Okay. I'll raise it with them. But every market looks like this, not just Hong Kong."

James sets down the phone. Then he swears at the monitors. He gets up and opens the door, where a man in his thirties is waiting. James waves him in and goes back to his desk. The man stumbles over the gym bag and steps back.

"They want segmentation by age band. Get Brady and Venus to look into it. Two weeks, then bring it to the Friday call. We can still try something else."

The man nods, asks about an invoice, then leaves, the door open behind him.

James adjusts the photo on his desk. It's him, his wife, and their two girls, a selfie in a ski gondola, all four in down jackets. Snow goes sideways. He's mid-sneeze.

Click-click. Spreadsheet minimised, browser up. A clicker game with a cookie count across the top. The number has fifty-four zeroes after it.

The browser jumps to the calendar tab. A notification: "ABC Boxing in 1 hour." James closes it, and his mobile rings, the screen showing "Wife BB".

He answers it. "See you at ABC," he says. "Your gloves are falling apart."

*page_break
*return

*label camille_snapshot
Camille "The Mime" Durand

Sunday, 16 March 2025

The first-floor atrium of New Town Plaza Phase 3, Sha Tin. A ten-metre square of astroturf sits at the centre, a backdrop screening the public-transport exit. A velvet rope surrounds it, strung between movable brass posts, and families and young couples stream past on either side. A few dozen children crowd the velvet, a few adults behind them.

A banner on the backdrop reads: "French Mime Magic Show. Meet The Giant Chicken!"

Camille is in white face paint, a black beret, crimson scarf, striped top, and black suspenders. Over their scarf is a rope lanyard that reads "PERFORMER". A boy at the front of the crowd points at them. "Magic show!" Camille touches two fingers to their beret and bows. 

They straighten, and the crowd hushes. Then Camille high-steps, each footfall landing higher than the last, until they've climbed more than a metre above the audience. The children gasp.

They step back down, and brace sideways against an invisible wind. The front row's hair is blown back, and the children shriek.

Camille pulls out a huge sheet of silk, unfurls it with a flourish, and holds it up like a curtain. Then they swish it away to reveal the giant chicken.

The children scream, "CHICKEN!" Some adults look up. One girl ducks under the rope and pats the chicken's wing. The chicken clucks and nudges her back with its head. A man in a New Town Plaza vest steps in and says, "Please stay behind the rope."

A silver plate rises from underneath the chicken and lifts it into the air, where it fades. Camille curtsies. Whoops and cheers, and a few adults clap too. One father tells his son, "Time to do homework," and leads him away. The crowd breaks up.

Camille packs up the silk and straightens their scarf. The man in the vest says, "I've seen this three times and still don't know how you do it."

They spread their hands and shrug. The man rolls his eyes, mutters into his radio, and waves to Camille as he leaves.

People walk past. Camille stands alone, facing the banner.

*page_break
*return

*label circuit_snapshot
Richwealth Industrial Building, Tsuen Wan

Wednesday, 19 March 2025

Early afternoon. Four men in T-shirts reach the corner of Fui Yiu Kok Street and Wang Lung Street, and cut through the car park into a lift. They pile out on the sixth floor and go down a wide corridor to the glass door at the far end. A middle-aged woman waits at the door, sucking a Hi-C chrysanthemum tea carton until the sides cave in.

"Hello, come this way." The woman unlocks the door and they all go inside. A smooth concrete floor. Two pillars, a long way apart, and windows on two sides, the blinds up. Cardboard boxes are stacked along one wall, shoulder height. By the windows, a desk, a chair behind it, and a desktop computer.

"It's a nice corner unit, three thousand square feet. Two sets of toilet keys, independent air-con."

One man takes out a tape measure, runs it from pillar to wall. Another one stands at the windows, facing the building opposite. The other two step back into the corridor, one reading the nameplates on the neighbouring units, the other stopping under the CCTV camera by the lifts.

One of the men inside closes the door. "Testing, testing, one-two-three."

Through the door: "Copy."

The four of them gather again in the middle of the room, talking quietly.

"Setup seems okay. Large enough."

"But corner is not good. Too exposed."

"What does corner unit have to do with it?"

"[i]Diu[/i], not corner unit. Street corner."

"Oh. Could have said that before we booked the viewing."

The fourth man says, "Might work with fewer people."

"Maybe."

The woman comes over. "If you want to hold a date, I'll need a deposit. I'll send you my FPS details. Still have a few more people coming to view it."

"Mm-hmm. Let's see. Thanks for showing us around."

The men go out. In the lift, one of them says, "You're getting too old for this."

"Not yet."
 
*page_break
*return

*label office_snapshot
The Office

Tuesday, 1 April 2025

The air-conditioning is blasting. The noticeboard was cleared before Chinese New Year, but it's already filled up again: a staff discount at the café downstairs, sick leave requires a medical certificate, paternity leave is now ten days, twice the legal requirement.

${first_name} is filling ${his} mug. The water dispenser stands on a wooden cabinet with one corner chipped away. Someone has jammed a folded sheet of paper into the gap to keep it level. A sentence peeks out: "Staff are reminded that participation in such activities may result in injury, permanent disability and death." The paper is damp, the ink bleeding. $!{he} @{gender_num returns|returns|return} to ${his} desk and @{gender_num deletes|deletes|delete} ten emails without reading any of them.

${first_name}'s phone buzzes. A friend cancelling tomorrow's dinner because of overtime. Le Creuset casserole dishes, limited time offer, redeem stamps by month end. New arrivals at a sneaker shop on Fa Yuen Street. $!{he} @{gender_num clears|clears|clear} all the notifications and @{gender_num scrolls|scrolls|scroll} down the chat list, looking for bank account details. Three months back, just above the promoter.

$!{he} @{gender_num retrieves|retrieves|retrieve} a flimsy promotional calendar from the office bin and @{gender_num scribbles|scribbles|scribble} in a report deadline, two weeks away. $!{he} @{gender_num flips|flips|flip} forward and @{gender_num circles|circles|circle} the date of the office barbecue in thick black ink.

Down to lunch. Cold soba with tempura.

*page_break
*return

*label mkfight_snapshot
MK Fight Gym

Thursday, 3 April 2025

The ceiling fans rattle over the last thumps on the heavy bags. A dozen students stretch on the mats, drink from their bottles, and head for the changing room. Coach Lam stands by the equipment rack, arms folded.

One by one, the students trail out. Only ${first_name} remains. Coach Lam nods at ${him}, and the two of them go into the back room, just wide enough for a desk and two stools. They sit on either side of the desk, the monitor turned sideways between them. ${first_name} opens a spreadsheet.

Coach Lam leans in until his face is a foot from the screen, grunting now and then, as ${first_name} runs through it. After fifteen minutes, ${first_name} closes the file.

Coach Lam sits back. "So it comes down to money."

"Yeah, looks like it."

"Let's talk more later. [i]Siu yeh?[/i]" Coach Lam asks.

"Sure. How about congee?"

They go down the three flights and out onto Tung Choi Street. Cooler outside than inside.

*page_break
*return

*comment "rejected" is for both scene 1 reject and scene 4 reject
*comment "rejected" Eric does not show an epilogue snapshot
*comment eric_partner set in event_5
*comment If the player progresses the Eric subplot at the slowest possible pace while keeping it available, they will have completed events 1-4.
*label eric_snapshot
*if (eric_partner)
    Eric "Blazefist" Jiang

    ${display_date_string}

    Yee Tsui Court, Yee Shing Street, Chai Wan, twenty storeys of white tile. On the fifteenth floor, a double bed takes up almost the whole bedroom. The covers are thrown back on one side. ${first_name} is still asleep, facing away from the curtains, where sunlight comes through the gap and lands on the wall.

    Eric stands at the stove, a saucepan on one of the two burners, flame low. Inside, congee, rings of spring onion, slivers of ginger. White pepper goes in. Eric picks up a plate of raw fish, each slice near-translucent. He slides them in one after another, then turns the gas off.

    Eric pours the congee into two porcelain bowls and carries them out to the table. The table wobbles and the congee reaches the rim. He flips the tap to filter water and fills two glasses.

    In the bedroom, ${first_name} stirs and opens ${his} eyes, then brushes ${his} teeth. $!{he} @{gender_num comes|comes|come} out to the table. Eric looks up, and ${first_name} kisses him before sitting down.

    ${first_name} starts eating. Eric takes his time assembling his spoonful. A sliver of ginger, half a slice of fish, and congee under it all.

    "Mmm. This is good."

    "Thanks. Next time I'll make small-boat congee."

    They take the lift down. Eric waits with ${first_name} inside the queue railing, no one else lined up.
    *if (katie_partner)
        "Are you seeing Katie later?"

        "Not today."
    *elseif (chloe_partner)
        "Are you seeing Chloe later?"

        "Not today."

    The bus pulls in. They hug. Eric lets go first, and ${first_name} gets on. Eric watches the bus turn the corner, then walks to the MTR.

    *page_break
    *if (eric_subplot_scene = 7)
        *if (eric_harmony > 50)
            *gosub eric_subroutine_harmony_7
        *else
            *gosub eric_subroutine_ambition_7

    *elseif (eric_subplot_scene = 6)
        *comment Pearl River Cup completed, Eric reported the result to PC
        *if (eric_harmony > 50)
            *gosub eric_subroutine_harmony_6
        *else
            *gosub eric_subroutine_ambition_6
    *else
        *bug This should be unreachable    

    *page_break
*elseif (eric_subplot_status = "available")
    Eric "Blazefist" Jiang

    ${display_date_string}

    Yee Tsui Court, Yee Shing Street, Chai Wan, the white tile facade glaring where the sun hits it. On the fifteenth floor, Eric stands at the stove, a saucepan on one of the two burners, flame low. Inside, congee, rings of spring onion, slivers of ginger. White pepper goes in. Eric picks up a plate of raw fish, each slice near-translucent. He slides them in one after another, then turns the gas off.

    He pours the congee into a porcelain bowl and carries it out to the table. The table wobbles and the congee reaches the rim. He flips the tap to filter water and fills a glass. Eric takes his time assembling his spoonful. A sliver of ginger, half a slice of fish, and congee under it all.

    The phone screen lights up. ${first_name}. "Can we change tomorrow's walk to 2:30?"

    Eric texts back, then updates his calendar. Back to the congee.

    He rinses the bowl and stands it on the rack. Then he changes, takes the lift down, and walks to the MTR.
    
    *page_break
    *if (eric_subplot_scene = 7)
        *if (eric_harmony > 50)
            *gosub eric_subroutine_harmony_7
        *else
            *gosub eric_subroutine_ambition_7
    *elseif (eric_subplot_scene = 6)
        *if (eric_harmony > 50)
            *gosub eric_subroutine_harmony_6
        *else
            *gosub eric_subroutine_ambition_6
    *elseif (eric_subplot_scene = 5)
        *if (eric_harmony > 50)
            *gosub eric_subroutine_harmony_5
        *else
            *gosub eric_subroutine_ambition_5
    *else
        *bug This should be unreachable

    *page_break
*elseif (eric_subplot_status = "lapsed")
    *if eric_subplot_scene = 1
        *comment You never took up Eric's offer. Fall through with no page break
    *elseif eric_subplot_scene = 2
        *comment One training session, then lapsed or rejected training partners
        Eric "Blazefist" Jiang

        ${display_date_string}

        Quarry Bay, at a tram stop. ${first_name} walks west and stops at a grey concrete facade. Brushed steel door, no signage, numeric keypad. Once, ${he} went down the stairs into cold air. Blue mats, white light, a man in a red gi.

        $!{he} @{gender_num walks|walks|walk} on.
    
        *page_break
    *elseif eric_subplot_scene = 3
        *comment Training sessions, Chloe interruption
        Eric "Blazefist" Jiang

        ${display_date_string}

        Quarry Bay, at a tram stop. ${first_name} walks west and stops at a grey concrete facade. Brushed steel door, no signage, numeric keypad. Long ago, ${he} went down the stairs into cold air. Blue mats, white light, and a man in a red gi.

        ${first_name} takes out ${his} phone and scrolls down the chat list. Eric. $!{he} @{gender_num opens|opens|open} it.

        $!{he} @{gender_num doesn't|doesn't|don't} type anything. The screen goes dark.

        $!{he} @{gender_num walks|walks|walk} on.

        *page_break
    *elseif eric_subplot_scene = 4
        *comment Master Cheng visit
        Eric "Blazefist" Jiang

        ${display_date_string}

        Quarry Bay, at a tram stop. ${first_name} walks west and stops at a grey concrete facade. Brushed steel door, no signage, numeric keypad. Long ago, ${he} went down the stairs into cold air. Blue mats, white light, and Eric. Later, a dirt trail, through bamboo, to a Hakka house in Yuen Long.

        ${first_name} takes out ${his} phone and scrolls down the chat list. Eric. $!{he} @{gender_num opens|opens|open} it.

        $!{he} @{gender_num doesn't|doesn't|don't} type anything. $!{he} @{gender_num searches|searches|search} Eric's name instead. An exhibition match at Kai Tak, tickets on sale.

        Could be worth going. $!{he} @{gender_num walks|walks|walk} on.

        *page_break
    *elseif eric_subplot_scene = 5
        *comment also saw Eric's training at HKSI
        Eric "Blazefist" Jiang

        ${display_date_string}

        Quarry Bay, at a tram stop. ${first_name} walks west and stops at a grey concrete facade. Brushed steel door, no signage, numeric keypad. Long ago, ${he} went down the stairs into cold air. Blue mats, white light, and Eric.

        The door swings open, and Eric comes up onto the street, gym bag over his shoulder.

        "${first_name}?"

        "Eric?"

        Eric puts out his hand. ${first_name} shakes it. "Haven't seen you in a while," Eric says. "Time flies."

        "Yeah. What have you been up to?"

        "Still training. Seeing Master Cheng more, too."

        "That's great. I'm still at the office most of the time."

        Eric adjusts the strap on his gym bag. "Master Cheng's expecting me. Nice to see you again."

        "Same. See you."

        Eric goes east. ${first_name} walks on.

        *page_break
    *elseif eric_subplot_scene = 6
        *comment Not partners, Eric finished Pearl River Cup, quite close, and lapsed.
        Eric "Blazefist" Jiang

        ${display_date_string}

        Quarry Bay, at a tram stop. ${first_name} walks west and stops at a grey concrete facade. Brushed steel door, no signage, numeric keypad. Long ago, ${he} went down the stairs into cold air. Blue mats, white light, and Eric.

        The door swings open, and Eric comes up onto the street, gym bag over his shoulder.

        "${first_name}?"

        "Eric?"

        Eric pulls ${him} into a hug with one arm, then steps back. "Haven't seen you in a while. Time flies."

        "Yeah. What have you been up to?"

        "Still training. I'm helping Master Cheng at his centre, too."

        "That's great. How's it going there?"

        "Busy. Meditation classes. Lots of paperwork."

        "I'd like to visit sometime."

        "Yeah, that would be good."

        Eric adjusts the strap on his gym bag. "Master Cheng's expecting me. Nice to see you again."

        "Same. See you."

        Eric goes east. ${first_name} walks on.

        *page_break
    *else
        *bug Invalid eric_subplot_scene
*elseif (eric_subplot_status = "rejected")
    *comment Fall through, no page break
*else
    *bug Invalid eric_subplot_status
*return

*label eric_subroutine_harmony_7
Chai Wan to Admiralty, then north. He gets a seat both times and sketches a row of stick figures, each one further into a spinning kick, an arrow underneath pointing forward.

Inside the Centre for Qi Therapy, Master Cheng stands near the windows, facing eight students seated on thin cushions. Eric gives a quick bow and then goes into the office, shutting the door behind him. He opens the binder at the top of the pile. Today it's a risk assessment for the school visit. Twenty pages.

Six pages in, his phone buzzes. It's the Kai Tak exhibition match, and he's pencilled in second from the top. He smiles, then pockets the phone.

The class ends. Master Cheng comes into the office and sits on a cushion in the corner. Eric works through to page twenty. Lunchtime. They go down the hill to the Café de Coral, and Eric orders the baked pork chop rice, Master Cheng the boneless Hainan chicken set. Master Cheng takes a bite, frowns, looks at Eric, back at his chicken, and says, "Hardship builds character."

After the meal, Eric says goodbye and takes the train back to Eastside. He warms up and works with two students on their punching form at the bags. Next, he crosses to the mats and drills footwork, step punches, blocks.

Then he trains his [i]Tornado Kick[/i]. Less power in it; he spins faster instead.

No good. He over-rotates, pitches forward, and lands on his face.

He tries once more. Better — he stumbles, though he manages to stay on his feet. But he ends up where he started.

He nods. He stretches, then packs his bag and goes up the stairs. Out on the street, he pats his trouser pocket.

"Ugh." Eric goes back down for his phone.

*return

*label eric_subroutine_ambition_7
Chai Wan to Admiralty, then north. He gets a seat both times and sketches a row of stick figures, each one further into a spinning kick, the kicking foot scribbled over with flames.

Inside the Centre for Qi Therapy, Master Cheng stands near the windows, facing eight students seated on thin cushions. Eric gives a curt bow and then stands behind the students. Master Cheng counts: in for four, hold for four, out for eight. Eric moves down the row. He nudges a student's shoulder down, taps another one's spine straight with two fingers.

The class ends, and Eric stacks the cushions up against the wall. His phone buzzes. It's the Kai Tak exhibition match, and he's pencilled in as the main event. He reads it to the bottom. Then he taps one of the three suggested replies: "Yes, I'm interested."

Lunchtime. They go down the hill to the Café de Coral, and Eric orders the baked pork chop rice, Master Cheng the boneless Hainan chicken set. Master Cheng takes a bite, frowns, looks at Eric, back at his chicken, and says, "Hardship builds character."

After the meal, Eric says goodbye and takes the train back to Eastside. He warms up and works with two students on their punching form at the bags. Next, he crosses to the mats and drills footwork, step punches, blocks.

He moves to the far corner, away from the bags. He mutters, "[i]Fire Tornado[/i]." Then he jumps into the air, extending his leg in a spinning kick.

No fire at all. Standing still, he lifts his leg at the knee and holds it there; flames wreathe his foot.

He tries another [i]Tornado Kick[/i]. Still nothing.

He rubs his chin and then shrugs. He stretches, packs his bag, and goes up the stairs. Out on the street, he takes out his notebook and writes: "Fire Tornado — jump higher?"

He pockets the notebook and walks to the MTR.

*return

*label eric_subroutine_harmony_6
Chai Wan to Admiralty, then north. He gets a seat both times and sketches a row of stick figures, each one in a spinning kick.

Inside Master Cheng's training centre, Eric gives a quick bow and goes into the office, shutting the door behind him. He opens the binder at the top of the pile, grabs a blue pen, and starts flipping through the pages. His phone buzzes: a tournament invitation. He reads the message, smiles, and pockets the phone.

Lunchtime. Eric and Master Cheng go down the hill to a Café de Coral. Eric orders the baked pork chop rice, Master Cheng the boneless Hainan chicken set. Master Cheng takes a bite, looks at his chicken, and says, "Hardship builds character."

After the meal, Eric says goodbye and takes the train back to Eastside. He warms up and works with two students on their punching form at the bags. Next, he crosses to the mats and drills footwork, step punches, blocks.

Then he trains his [i]Tornado Kick[/i]. Less power in it; he spins faster instead.

Afterwards, he stretches, then packs his bag and goes up the stairs. Out on the street, he pats his trouser pocket.

"Ugh." Eric goes back down for his phone.

*return

*label eric_subroutine_ambition_6
Chai Wan to Admiralty, then north. He gets a seat both times and sketches a row of stick figures, each one in a spinning kick.

Inside Master Cheng's training centre, Master Cheng stands near the windows, facing eight students seated on thin cushions. Master Cheng leads the class, and Eric moves down the row, correcting the students' postures.

Lunchtime. Eric and Master Cheng go down the hill to a Café de Coral. Eric orders the baked pork chop rice, Master Cheng the boneless Hainan chicken set. Master Cheng takes a bite, looks at his chicken, and says, "Hardship builds character."

After the meal, Eric says goodbye and takes the train back to Eastside. He warms up and works with two students on their punching form at the bags. Next, he crosses to the mats and drills footwork, step punches, blocks.

Then he retreats to a corner and trains his [i]Tornado Kick[/i].

Afterwards, he stretches, then packs his bag and goes up the stairs. Out on the street, he takes out his notebook and writes: "...jump higher?"

He pockets the notebook and walks to the MTR.

*return

*label eric_subroutine_harmony_5
Chai Wan to Admiralty, then to the New Territories. He gets a seat both times and sketches a row of stick figures, each one in a combat pose.

Eric crosses a courtyard and enters a building, then continues into a small room at the back. He opens a binder and starts working through it. Lunchtime, at a Café de Coral down the hill, baked pork chop and rice. Then the train to Eastside, all the way back.

He warms up and works with two students on their punching form at the bags. Then he crosses to the mats and drills footwork, step punches, blocks, and the [i]Tornado Kick[/i] to finish up.

Afterwards, he stretches, then packs his bag and goes up the stairs. Out on the street, he pats his trouser pocket.

"Ugh." Eric goes back down for his phone.

*return

*label eric_subroutine_ambition_5
Chai Wan to Admiralty, then to the New Territories. He gets a seat both times and sketches a row of stick figures, each one in a combat pose.

Eric crosses a courtyard and enters a building, then continues into a room near the back. A meditation class; he corrects the students' postures. Lunchtime, at a Café de Coral down the hill, baked pork chop and rice. Then the train to Eastside, all the way back.

He warms up and works with two students on their punching form at the bags. Then he crosses to the mats and drills footwork, step punches, blocks, and the [i]Tornado Kick[/i] to finish up.

Afterwards, he stretches, then packs his bag and goes up the stairs. Out on the street, he scribbles in his notebook, then pockets it and walks to the MTR.

*return


*label katie_snapshot
*comment "rejected" Katie does not show an epilogue snapshot
*comment katie_partner set in event_6. This also means no need to branch if katie_partner is true
*comment If the player progresses the Katie subplot at the slowest possible pace while keeping it available, they will have completed events 1-4.
*if (katie_partner)
    Katie "Pressure Point" Reynolds

    ${display_date_string}

    *if (katie_masking > 50)
        *gosub katie_morning_masking_7
    *else
        *gosub katie_morning_authenticity_7

    *page_break
    *gosub katie_afternoon_partner

    *page_break
    *if (katie_masking > 50)
        *gosub katie_evening_masking_7
    *else
        *gosub katie_evening_authenticity_7

    *page_break
*elseif (katie_subplot_status = "available")
    Katie "Pressure Point" Reynolds

    ${display_date_string}

    *if (katie_subplot_scene = 7)
        *if (katie_masking > 50)
            *gosub katie_morning_masking_7
        *else
            *gosub katie_morning_authenticity_7

        *page_break
        *gosub katie_afternoon_7

        *page_break
        *if (katie_masking > 50)
            *gosub katie_evening_masking_7
        *else
            *gosub katie_evening_authenticity_7

        *page_break
    *elseif (katie_subplot_scene = 6)
        *if (katie_masking > 50)
            *gosub katie_morning_masking_6
        *else
            *gosub katie_morning_authenticity_6

        *page_break
        *gosub katie_afternoon_6

        *page_break
        *if (katie_masking > 50)
            *gosub katie_evening_masking_6
        *else
            *gosub katie_evening_authenticity_6

        *page_break
    *elseif (katie_subplot_scene = 5)
        *if (katie_masking > 50)
            *gosub katie_morning_masking_5
        *else
            *gosub katie_morning_authenticity_5

        *page_break
        *gosub katie_afternoon_5

        *page_break
        *if (katie_masking > 50)
            *gosub katie_evening_masking_5
        *else
            *gosub katie_evening_authenticity_5

        *page_break
    *else
        *bug This should be unreachable

*elseif (katie_subplot_status = "lapsed")
    *if (katie_subplot_scene = 1)
        *comment You never took up Katie's offer. Fall through with no page break
    *elseif (katie_subplot_scene >= 5)
        Katie "Pressure Point" Reynolds

        ${display_date_string}

        Katie slaps the alarm without looking. She stands, puts on a plain grey T-shirt and navy trousers, and gathers her hair into a ponytail.

        Out in the common area, she switches on the kettle and makes instant oats, mixes 3-in-1 coffee, and grabs a banana. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side. A brief chat, and the roommate disappears into the bathroom.

        Several hours working on her thesis, and it's evening. Time for shopping. Katie grabs a trolley from the stack by the door, and goes down the aisles. Turning a corner, her trolley bumps another woman's trolley. They both apologise.

        She picks up a few things and parks her trolley at the cashier's counter. She unloads the trolley onto the belt, and the cashier scans the items.

        "Do you need a bag?"

        "No, I already have a bag." Katie taps her Octopus and opens her cloth bag.

        Back to the dorm.

        *page_break
    *else
        *comment Before visiting her dorm
        Katie "Pressure Point" Reynolds

        ${display_date_string}

        Katie slaps the alarm without looking. She stands, puts on a plain grey T-shirt and navy trousers, and gathers her hair into a ponytail. She eats breakfast while scrolling her messages and emails.

        She works on her thesis for most of the day, only going out for shopping. 

        At the Wellcome, a woman reaches for the same packet of instant oats. Katie pulls her hand back.

        "Sorry."

        "It's okay."

        Katie takes the next packet.
        
        *page_break
*elseif (katie_subplot_status = "rejected")
    *comment Fall through, no page break
*else
    *bug Invalid katie_subplot_status
*return

*label katie_morning_masking_7
[i]Beep-beep-beep. Beep-beep-beep.[/i]

Katie slaps the alarm without looking. 8:30am. She sits up, swings her legs over the edge and into her slippers, and opens her eyes. She stands, shakes out the blanket, and pulls it flat. 

She grabs the clothes from the hanger, picked out last night: a plain grey T-shirt and navy trousers. The T-shirt goes over her head. She steps into the trousers, one leg then the other, and gathers her hair into a ponytail. On her desk, a thin stack of marked-up pages and a small notepad. She slips the notepad into her trouser pocket.

Out into the common area. She switches on the kettle and pours a sachet of instant oats into a bowl. 3-in-1 coffee into a mug. A banana torn off the bunch, carried to the table.

The kettle boils. Katie pours the hot water into the oats and the mug, and brings both to the table. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side.

"Hey, Katie."

"Hey, Natalie. How did your presentation go yesterday?"

"It went fine, except I had a coughing fit halfway through."

"Oof, that sounds tough. How did they react?"

"They waited it out. Could have been worse. What are you up to today?"

"Nearly done with revisions. I'll see ${first_name} in the afternoon."

"Cool. See you later!"

Natalie disappears into the bathroom, and the door clicks shut. Katie takes the notepad from her pocket and places a tick next to the first line: "Natalie". She hums the Don Don Donki theme tune.
*return

*label katie_morning_authenticity_7
[i]Beep-beep-beep. Beep-beep-beep.[/i]

Katie slaps the alarm without looking. 8:30am. She sits up, swings her legs over the edge and into her slippers, and opens her eyes. She stands, shakes out the blanket, and pulls it flat. 

She slides the drawer out from under her bed and digs out a plain grey T-shirt and navy trousers. The T-shirt goes over her head. She steps into the trousers, one leg then the other, and gathers her hair into a ponytail. On her desk, a pile of binders and a thick stack of marked-up pages.

Out into the common area. She switches on the kettle and pours a sachet of instant oats into a bowl. 3-in-1 coffee into a mug. A banana torn off the bunch, carried to the table.

The kettle boils. Katie pours the hot water into the oats and the mug, and brings both to the table. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side.

"Hey, Katie."

"Hey, Natalie. There's hot water in the kettle."

"Oh, thanks. What are you up to today?"

"I've finished breakfast. Next up is thesis revisions. Then lunch. Then ${first_name} in the afternoon."

"Sounds like a plan. See you later."

Natalie disappears into the bathroom, and the door clicks shut. Katie goes into her room and starts on the top page.
*return

*label katie_morning_masking_6
[i]Beep-beep-beep. Beep-beep-beep.[/i]

Katie slaps the alarm without looking. 8:30am. She sits up, swings her legs over the edge and into her slippers, and opens her eyes. She stands, shakes out the blanket, and pulls it flat. 

She grabs a plain grey T-shirt and navy trousers from the hanger. The T-shirt goes over her head, and she steps into the trousers, one leg then the other, and gathers her hair into a ponytail.

Out into the common area. She switches on the kettle and pours a sachet of instant oats into a bowl. 3-in-1 coffee into a mug. A banana torn off the bunch, carried to the table.

The kettle boils. Katie pours the hot water into the oats and the mug, and brings both to the table. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side.

"Hey, Katie."

"Hey, Natalie. How did your presentation go yesterday?"

"It went fine, except I had a coughing fit halfway through."

"Oof, that sounds tough. How did they react?"

"They waited it out. Could have been worse. What are you up to today?"

"Nearly done with revisions. I'll see ${first_name} in the afternoon."

"Cool. See you later!"

Natalie disappears into the bathroom, and the door clicks shut.
*return

*label katie_morning_authenticity_6
[i]Beep-beep-beep. Beep-beep-beep.[/i]

Katie slaps the alarm without looking. 8:30am. She sits up, swings her legs over the edge and into her slippers, and opens her eyes. She stands, shakes out the blanket, and pulls it flat. 

She grabs a plain grey T-shirt and navy trousers. The T-shirt goes over her head. She steps into the trousers, one leg then the other, and gathers her hair into a ponytail. On her desk, a pile of binders and a thick stack of marked-up pages.

Out into the common area. She switches on the kettle and pours a sachet of instant oats into a bowl. 3-in-1 coffee into a mug. A banana torn off the bunch, carried to the table.

The kettle boils. Katie pours the hot water into the oats and the mug, and brings both to the table. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side.

"Hey, Katie."

"Hey, Natalie. There's hot water in the kettle."

"Oh, thanks."

More small talk, then Natalie disappears into the bathroom, and the door clicks shut. Katie goes into her room and starts on the top page.
*return

*label katie_morning_masking_5
[i]Beep-beep-beep. Beep-beep-beep.[/i]

Katie slaps the alarm without looking. 8:30am. She sits up, swings her legs over the edge and into her slippers, and opens her eyes. She stands, shakes out the blanket, and pulls it flat. She puts on a plain grey T-shirt and navy trousers, and gathers her hair into a ponytail.

Out into the common area. She switches on the kettle and pours a sachet of instant oats into a bowl. 3-in-1 coffee into a mug. A banana torn off the bunch, carried to the table.

The kettle boils. Katie pours the hot water into the oats and the mug, and brings both to the table. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side. A brief chat, and the roommate disappears into the bathroom.
*return

*label katie_morning_authenticity_5
[i]Beep-beep-beep. Beep-beep-beep.[/i]

Katie slaps the alarm without looking. 8:30am. She sits up, swings her legs over the edge and into her slippers, and opens her eyes. She stands, shakes out the blanket, and pulls it flat. She puts on a plain grey T-shirt and navy trousers, and gathers her hair into a ponytail.

Out into the common area. She switches on the kettle and pours a sachet of instant oats into a bowl. 3-in-1 coffee into a mug. A banana torn off the bunch, carried to the table.

The kettle boils. Katie pours the hot water into the oats and the mug, and brings both to the table. She eats one-handed, scrolling her messages and emails. As she finishes, her roommate comes out of the next room, yawning, black hair pushed up on one side. A brief chat, and the roommate disappears into the bathroom.
*return

*label katie_afternoon_partner
The bus doors fold back, and Katie and ${first_name} alight at Repulse Bay Beach. Hoarding runs the length of the Repulse Bay Arcade, white netting above it. Katie reads the notice on the hoarding. "It says they're renovating for the rest of the year. I was hoping to do some window shopping."

"Never mind. We came for the beach anyway."

*if (katie_masking > 50)
    "Okay, that's a plan. Let's go."
*else
    "Let's go."
Katie grabs ${first_name}'s hand, looks both ways, and crosses on red. Down a flight of steps, then one more, and the pavement gives out into sand. Umbrellas and towels tile the beach, right up to the tideline. They walk down to the wet sand and turn towards the Kwun Yam shrine.

Katie rolls up her trousers to the knee, and ${first_name} does the same with ${his} jeans. People stream by. A family of four, the man carrying a cool box against his chest with both arms. A jogger going the other way, almost as slow as the walkers. A bride with her dress gathered in one hand, the train grey with sand. A groom in a silver tuxedo, a photographer walking backwards.

*if (katie_masking > 50)
    "Must be hot in that tuxedo."

    ${first_name} nods. "They go on for hours. My cousin Winnie couldn't get to the toilets all afternoon."
*else
    "Do people enjoy these photo shoots? They don't look like they're enjoying it." 

    ${first_name} puts a finger to ${his} lips, but then ${he} @{gender_num laughs|laughs|laugh} anyway. So does Katie.

Halfway to the shrine, the umbrellas and towels thin out. Katie squats down and scoops sand into a heap with both hands. She looks up at ${first_name}, hands already digging.

"I used to do this every time we went to the beach! I'd make moats and fill them with water. Never knew why the water would drain away."

${first_name} kneels and pushes more sand up the sides. Katie builds a shallow rampart, then scrapes a dry moat around it. They pile it higher and pat the sides flat with their palms. It has corners now. A boy runs over and starts reinforcing the rampart, until a woman retrieves him.

The fort's shadow reaches across the moat. Katie stands and brushes her hands together. "I'm thirsty. Let's get a drink."

"Sure." ${first_name} stands, hands on hips, and looks the fort over. Then ${he} @{gender_num turns|turns|turn} to Katie and @{gender_num leans|leans|lean} in. $!{he} @{gender_num kisses|kisses|kiss} her. Their sand-caked hands stay out at their sides.
*return

*label katie_afternoon_7
The bus doors fold back, and Katie and ${first_name} alight at Repulse Bay Beach. Hoarding runs the length of the Repulse Bay Arcade, white netting above it. Katie reads the notice on the hoarding. "It says they're renovating for the rest of the year. I was hoping to do some window shopping."

"Never mind. We came for the beach anyway."

*if (katie_masking > 50)
    "Okay, that's a plan. Let's go."
*else
    "Let's go."
Katie looks both ways, and crosses on red, ${first_name} following. Down a flight of steps, then one more, and the pavement gives out into sand. Umbrellas and towels tile the beach, right up to the tideline. They walk down to the wet sand and turn towards the Kwun Yam shrine.

Katie rolls up her trousers to the knee, and ${first_name} does the same with ${his} jeans. People stream by. A family of four, the man carrying a cool box against his chest with both arms. A jogger going the other way, almost as slow as the walkers. A bride with her dress gathered in one hand, the train grey with sand. A groom in a silver tuxedo, a photographer walking backwards.

*if (katie_masking > 50)
    "Must be hot in that tuxedo."

    ${first_name} nods. "They go on for hours. My cousin Winnie couldn't get to the toilets all afternoon."
*else
    "Do people enjoy these photo shoots? They don't look like they're enjoying it." 

    ${first_name} puts a finger to ${his} lips, but then ${he} @{gender_num laughs|laughs|laugh} anyway. So does Katie.

Halfway to the shrine, the umbrellas and towels thin out. Katie squats down and scoops sand into a heap with both hands. She looks up at ${first_name}, hands already digging.

"I used to do this every time we went to the beach! I'd make moats and fill them with water. Never knew why the water would drain away."

${first_name} kneels and pushes more sand up the sides. Katie builds a shallow rampart, then scrapes a dry moat around it. They pile it higher and pat the sides flat with their palms. It has corners now. A boy runs over and starts reinforcing the rampart, until a woman retrieves him.

The fort's shadow reaches across the moat. Katie stands and brushes her hands together. "I'm thirsty. Let's get a drink."

"Sure." ${first_name} stands, hands on hips, and looks the fort over. Then they walk back up the beach, sand-caked hands held out at their sides.

*return

*label katie_afternoon_6
The bus doors fold back, and Katie and ${first_name} alight at Repulse Bay Beach. Hoarding runs the length of the Repulse Bay Arcade, white netting above it. Katie reads the notice on the hoarding. "It says they're renovating for the rest of the year. I was hoping to do some window shopping."

"Never mind. We came for the beach anyway."

*if (katie_masking > 50)
    "Okay, that's a plan. Let's go."
*else
    "Let's go."
Katie looks both ways and crosses, ${first_name} following. Down a flight of steps, then one more, and the pavement gives out into sand. Umbrellas and towels tile the beach, right up to the tideline. They walk down to the wet sand and turn towards the Kwun Yam shrine.

Katie rolls up her trousers to the knee, and ${first_name} does the same with ${his} jeans. People stream by. A family of four, the man carrying a cool box against his chest with both arms. A jogger going the other way, almost as slow as the walkers. A bride with her dress gathered in one hand, the train grey with sand. A groom in a silver tuxedo, a photographer walking backwards.

*if (katie_masking > 50)
    "Must be hot in that tuxedo."

    ${first_name} nods. "They go on for hours. My cousin Winnie couldn't get to the toilets all afternoon."
*else
    "Do people enjoy these photo shoots? They don't look like they're enjoying it." 

    ${first_name} breathes in, holds it, but then laughs. So does Katie.

Halfway to the shrine, the umbrellas and towels thin out. "I'm thirsty. Let's get a drink."

"Sure." They walk along the beach, discussing which lemon tea to get.

*return

*label katie_afternoon_5
The bus doors fold back, and Katie and ${first_name} alight at Repulse Bay Beach. Hoarding runs the length of the Repulse Bay Arcade, white netting above it. Katie reads the notice on the hoarding. "It says they're renovating for the rest of the year. I was hoping to do some window shopping."

"Never mind. We came for the beach anyway."

"Okay, let's go." Katie looks both ways and crosses, ${first_name} following. Down a flight of steps, then one more, and the pavement gives out into sand. Umbrellas and towels tile the beach, right up to the tideline. They walk down to the wet sand and turn towards the Kwun Yam shrine.

People stream by. A family of four, the man carrying a cool box against his chest with both arms. A jogger going the other way, almost as slow as the walkers. A bride with her dress gathered in one hand, a groom in a tuxedo, a photographer alongside them.

Halfway to the shrine, the umbrellas and towels thin out. "I'm thirsty. Let's get a drink."

"Sure." They walk along the beach, discussing which lemon tea to get.

*return

*label katie_evening_masking_7
6:15pm. The air conditioning hits Katie at the door of the Wellcome. She grabs a trolley from the stack by the door, narrower than her shoulders and half a metre long. She starts at the vegetables. The misters come on with a hiss, clouding the [i]choi sum[/i], and she stands there, eyes closed, leaning in.

The YUU jingle loops around, [i]Uptown Girl[/i] in Cantonese. "Y! U! U!"

Katie skips the yoghurt, milk, and eggs. She turns into the next aisle, her trolley bumping another woman's trolley. They both say "sorry" at the same time.

Katie grabs 3-in-1 milk tea mix, 3-in-1 coffee, instant oats, and laundry detergent. She walks briskly down the confectionery aisle and reaches the front. She passes the two idle self-checkout machines, and parks her trolley at the cashier's counter.

"Y! U! U!" Again.

Katie hums along as she unloads the trolley onto the belt. The cashier, a woman in her fifties, takes the oats without looking at Katie. "Do you have YUU?"

Katie nods. She holds her phone up to the scanner. [i]Beep. Beep, beep, beep, beep.[/i] The items gather at the far end of the counter.

"Do you need a bag?"

"No, thank you." Katie taps her Octopus, shakes her cloth bag open, and packs. Out through the doors, into the warm evening air.
*return

*label katie_evening_authenticity_7
6:15pm. The air conditioning hits Katie at the door of the Wellcome. She grabs a trolley from the stack by the door, narrower than her shoulders and half a metre long. She starts at the vegetables. The misters come on with a hiss, clouding the [i]choi sum[/i], and she stands there, eyes closed, leaning in.

The YUU jingle loops around, [i]Uptown Girl[/i] in Cantonese. "Y! U! U!"

Katie skips the yoghurt, milk, and eggs. She turns into the next aisle, her trolley bumping another woman's trolley. "Sorry," the woman says.

"Oh, I bumped you."

"It's okay."

Katie grabs 3-in-1 milk tea mix, 3-in-1 coffee, instant oats, and laundry detergent. She walks briskly down the confectionery aisle and reaches the front. She passes the two idle self-checkout machines, and parks her trolley at the cashier's counter.

"Y! U! U!" Again.

Katie sings along as she unloads the trolley onto the belt. The cashier, a woman in her fifties, takes the oats without looking at Katie. "Do you have YUU?"

Katie nods. She holds her phone up to the scanner. [i]Beep. Beep, beep, beep, beep.[/i] The items gather at the far end of the counter.

"Do you need a bag?"

"No, I already have a bag." Katie taps her Octopus, shakes her cloth bag open, and packs. Out through the doors, into the warm evening air.
*return

*label katie_evening_masking_6
6:15pm. The air conditioning hits Katie at the door of the Wellcome. She grabs a trolley from the stack by the door, and starts at the vegetables. The YUU jingle loops around, [i]Uptown Girl[/i] in Cantonese. "Y! U! U!"

Katie skips the yoghurt, milk, and eggs. She turns into the next aisle, her trolley bumping another woman's trolley. They both apologise.

She picks up a few things, cuts through the confectionery aisle to the checkouts, and parks her trolley at the cashier's counter. She unloads the trolley onto the belt, and the cashier takes the items without looking at her. "Do you have YUU?"

Katie nods. She holds her phone up to the scanner.

"Do you need a bag?"

"No, thank you." Katie taps her Octopus and opens her cloth bag.
*return

*label katie_evening_authenticity_6
6:15pm. The air conditioning hits Katie at the door of the Wellcome. She grabs a trolley from the stack by the door, and starts at the vegetables. The YUU jingle loops around, [i]Uptown Girl[/i] in Cantonese. "Y! U! U!"

Katie skips the yoghurt, milk, and eggs. She turns into the next aisle, her trolley bumping another woman's trolley. They both apologise.

She picks up a few things, cuts through the confectionery aisle to the checkouts, and parks her trolley at the cashier's counter. She unloads the trolley onto the belt, and the cashier takes the items without looking at her. "Do you have YUU?"

Katie nods. She holds her phone up to the scanner.

"Do you need a bag?"

"No, I already have a bag." Katie taps her Octopus and opens her cloth bag.
*return

*label katie_evening_masking_5
6:15pm. The air conditioning hits Katie at the door of the Wellcome. She grabs a trolley from the stack by the door, and goes down the aisles. Turning a corner, her trolley bumps another woman's trolley. They both apologise.

She picks up a few things and parks her trolley at the cashier's counter. She unloads the trolley onto the belt, and the cashier scans the items.

"Do you need a bag?"

"No, thank you." Katie taps her Octopus and opens her cloth bag.
*return

*label katie_evening_authenticity_5
6:15pm. The air conditioning hits Katie at the door of the Wellcome. She grabs a trolley from the stack by the door, and goes down the aisles. Turning a corner, her trolley bumps another woman's trolley. They both apologise.

She picks up a few things and parks her trolley at the cashier's counter. She unloads the trolley onto the belt, and the cashier scans the items.

"Do you need a bag?"

"No, I already have a bag." Katie taps her Octopus and opens her cloth bag.
*return


*comment For a POV compatible with the different amounts of information shown, we are using: the narrator knows everything but never reports Danny's thoughts and feelings directly.
*label danny_snapshot
*comment "rejected" Danny does not show an epilogue snapshot
*comment If the player progresses the Danny subplot at the slowest possible pace while keeping it available, they will have completed event 1 and event 2.
*if (danny_subplot_status = "available")
    *if (danny_subplot_scene = 6)
        Danny "The Dragon" Chan

        ${display_date_string}

        After that morning in Kowloon Park, Danny and ${first_name} kept meeting: a dinner on Temple Street, a jam session, an amusement arcade. Today, Danny strips the bed board and folds the blankets. He changes into a brown shirt, brown shorts, and dark rubber sandals.

        Canvas shoes to the exercise yard. Calisthenics, everyone in rows, the sun coming over the wall. Then shadowboxing by himself, the same forms in the same order. Breakfast: steamed rice, a boiled egg, Chinese tea.

        Laundry. A hot, humid hall, the far end lost in steam, conveyor belts, tied bags of linen stacked to head height, washers in a row, each taller than a man. Well over fifty prisoners at their stations, instructors walking the aisles. Danny stands at a table. An orange bin wheels in, pale blue hospital tunics. He takes one out, shakes it open, smooths out the creases. He matches the edges. He folds it, a neat rectangle, and lays it on top of the pile. Then the next one.

        Lunchtime. White plastic tables, white plastic stools. Congee, a slice of raisin bread, milk tea. A single orange. Danny sits with three others. They don't talk. They finish, and return their trays.

        Laundry again, then the dayroom. An hour of reading, on a plastic stool. 《射鵰英雄傳》, a white label on the spine. Danny finishes a chapter, then looks up. He starts on the next chapter. Then he closes his eyes and shuts the book.

        Dinner: a round plastic tray, rice on one side, soggy [i]choi sum[/i] and two fish fillets on the other. One apple.

        Danny returns to the dormitory. Four bunk beds, for eight. He wipes his bunk with a cloth. Blankets over the bed board, one on top of the other. He smooths them out and lies down.

    *elseif ((danny_subplot_scene >= 3) and (danny_subplot_scene <= 5))
        Danny "The Dragon" Chan
        
        ${display_date_string}

        *if (danny_subplot_scene = 3)
            After that morning in Kowloon Park, Danny and ${first_name} didn't meet again.
        *elseif (danny_subplot_scene = 4)
            After that morning in Kowloon Park, Danny and ${first_name} met again: a dinner on Temple Street.
        *elseif (danny_subplot_scene = 5)
            After that morning in Kowloon Park, Danny and ${first_name} kept meeting: a dinner on Temple Street, a jam session.
        *else
            *bug This shouldn't be reachable
        Today, Danny smooths out his blankets and changes into a brown shirt and shorts. Calisthenics, then shadowboxing, the same forms in the same order. Breakfast is steamed rice, a boiled egg, and Chinese tea.

        Then laundry. Danny takes out a tunic, shakes it open, smooths out the creases. He matches the edges. He folds it, a neat rectangle, and lays it on top of the pile. Then the next one. For lunch, congee, a slice of raisin bread, milk tea. A single orange.

        In the afternoon, an hour of reading. 《射鵰英雄傳》, a plastic jacket over the cover. Danny finishes a chapter, then looks up. He starts on the next chapter. Then he closes his eyes and shuts the book.

        Dinner is rice, soggy [i]choi sum[/i], fish fillets. One apple.

        Before eight, Danny lies down. The bed creaks.

    *else
        *bug This should be unreachable

    *page_break
*elseif (danny_subplot_status = "lapsed")
    *if (danny_subplot_scene = 1)
        *comment Player didn't search for Danny, fall through with no page break
    *elseif (danny_subplot_scene = 2)
        *comment Player searched for Danny, but didn't accept his invitation to meet up
        Danny "The Dragon" Chan

        ${display_date_string}

        ${first_name} searched for Danny after the match, but the two never met again.

        Calisthenics, shadowboxing, the same forms in the same order.

        Congee, a slice of raisin bread, milk tea. Rice with soggy [i]choi sum[/i] and fish fillets. A single apple.

        Another day ends. Danny lies down. The bed creaks.

        *page_break
    *else
        *comment Player searched for Danny, met up, then lapsed afterwards
        Danny "The Dragon" Chan
        
        ${display_date_string}

        *if (danny_subplot_scene = 3)
            After that morning in Kowloon Park, Danny didn't hear from ${first_name} again.
        *elseif (danny_subplot_scene = 4)
            After that morning in Kowloon Park, Danny and ${first_name} met for dinner on Temple Street, and then Danny didn't hear from ${him} again.
        *elseif (danny_subplot_scene = 5)
            *bug The timer shouldn't tick down for this
        *else
            *bug This shouldn't be reachable
        Today, Danny smooths out his blankets and changes into a brown shirt and shorts. Calisthenics, then shadowboxing, the same forms in the same order. Breakfast is steamed rice, a boiled egg, and Chinese tea.

        Then laundry. Danny takes out a tunic, shakes it open, smooths out the creases. He matches the edges. He folds it, a neat rectangle, and lays it on top of the pile. Then the next one. For lunch, congee, a slice of raisin bread, milk tea. A single orange.

        In the afternoon, an hour of reading. 《射鵰英雄傳》, a plastic jacket over the cover. Danny finishes a chapter, then looks up. He starts on the next chapter. Then he closes his eyes and shuts the book.

        Dinner is rice, soggy [i]choi sum[/i], fish fillets. One apple.

        Before eight, Danny lies down. The bed creaks.

        *page_break
*elseif (danny_subplot_status = "rejected")
    *comment Fall through, no page break
*else
    *bug Invalid danny_subplot_status
*return

*label chloe_snapshot
*comment If the player progresses the Chloe subplot at the slowest possible pace while keeping it available, they will have completed events 1-4.
*if (chloe_subplot_status = "available")
    Chloe "Wildcard" Wong

    ${display_date_string}

    *if (chloe_subplot_scene = 7)
        *if (chloe_acceptance > 50)
            *gosub chloe_morning_acceptance_7
        *else
            *gosub chloe_morning_protection_7

        *page_break
        *if (chloe_acceptance > 50)
            *gosub chloe_afternoon_acceptance_7
        *else
            *gosub chloe_afternoon_protection_7

        *page_break
        *if (chloe_partner)
            *gosub chloe_evening_partner
        *else
            *gosub chloe_evening_friend

        *page_break
    *elseif (chloe_subplot_scene = 6)
        *if (chloe_acceptance > 50)
            *gosub chloe_morning_acceptance_6
        *else
            *gosub chloe_morning_protection_6

        *page_break
        *if (chloe_acceptance > 50)
            *gosub chloe_afternoon_acceptance_6
        *else
            *gosub chloe_afternoon_protection_6

        *page_break
        *if (chloe_partner)
            *gosub chloe_evening_partner
        *else
            *gosub chloe_evening_friend

        *page_break    
    *elseif (chloe_subplot_scene = 5)
        *gosub chloe_morning_5
        
        *page_break
        *gosub chloe_afternoon_5

        *page_break
        *gosub chloe_evening_5

        *page_break
    *else
        *bug This should be unreachable
*elseif (chloe_subplot_status = "lapsed")
    *if (chloe_subplot_scene = 1)
        *comment You never took up Chloe's offer. Fall through with no page break
    *elseif (chloe_subplot_scene <= 5)
        *comment Events 1 up to 4 completed
        Chloe "Wildcard" Wong

        ${display_date_string}

        ICC, 86th floor, Studio 3. Floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

        Chloe's alone, in a Nike T-shirt and shorts, teeping a heavy bag. Then knees, jabs, elbows, roundhouses. The timer beeps.

        She sits on the bench and drinks. Deep breaths. She resets the timer and stands.

        One more round.

        *page_break
    *elseif (chloe_subplot_scene = 6)
        *comment Event 5 completed
        Chloe "Wildcard" Wong

        ${display_date_string}

        ICC, 86th floor, Studio 3. Floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

        Chloe's alone, in a Nike T-shirt and shorts, teeping a heavy bag. Then knees, jabs, elbows, roundhouses. Halfway through the roundhouses, her hand goes to her ribs.

        She stops and sits down.

        *page_break

        "... and I'd like to thank all of our partners for their continued support."

        Polite applause. Camera flashes from the side of the room. Chloe's in an emerald silk blouse tucked into a black midi skirt, black pumps, and gold stud earrings. She steps away from the podium and descends the stage. A man in a dark blue suit takes her place.

        *page_break
*elseif (chloe_subplot_status = "rejected")
    *comment Fall through, no page break
*else
    *bug Invalid chloe_subplot_status
*return

*comment Morning: Chloe by herself, show growth. Small acceptance/protection diff
*label chloe_morning_acceptance_7
ICC, 86th floor. Studio 3, a sports bag and navy Asics under the bench. On the far side, floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

Chloe's in a Nike T-shirt and shorts, teeping a heavy bag. The bag swings out, and she meets it on the return, every time. The timer beeps. Left knee, torso back. Right knee. Half a minute, then jab, spinning elbow. Half a minute of roundhouses, left and right, the bag shuddering with each [i]thwack[/i].

Two kicks from the end, her hand goes to her ribs. Another roundhouse, slower. She stops.

She sits on the bench and drinks. Deep breaths.

Still twenty minutes left on her booking. She stretches, packs her bag, and leaves.

*return

*label chloe_morning_acceptance_6
ICC, 86th floor. Studio 3, a sports bag and navy Asics under the bench. On the far side, floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

Chloe's in a Nike T-shirt and shorts, teeping a heavy bag. Then knees, jabs, elbows. Roundhouses, left and right, the bag shuddering with each [i]thwack[/i].

Two kicks from the end, her hand goes to her ribs. Another roundhouse, slower. She stops.

She sits on the bench and drinks. Deep breaths.

She stretches, packs her bag, and leaves.

*return

*label chloe_morning_5
ICC, 86th floor, Studio 3. On the far side, floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

Chloe's in a Nike T-shirt and shorts, teeping a heavy bag. Then knees, jabs, elbows, roundhouses. The timer beeps.

She sits on the bench and drinks. Deep breaths. She resets the timer and stands. One more round.

*return

*label chloe_morning_protection_7
ICC, 86th floor. Studio 3, a sports bag and navy Asics under the bench. On the far side, floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

Chloe's in a Nike T-shirt and shorts, teeping a heavy bag. The bag swings out, and she meets it on the return, every time. The timer beeps. Left knee, torso back. Right knee. Half a minute, then jab, spinning elbow. Half a minute of roundhouses, left and right, the bag shuddering with each [i]thwack[/i].

Two kicks from the end, her hand goes to her ribs. Another roundhouse, slower. She presses under the rib and twists carefully to either side.

She sits on the bench and drinks. Deep breaths. She takes out her phone and messages one of her physiotherapists.

Still twenty minutes left on her booking. She stretches, packs her bag, and leaves.

*return

*label chloe_morning_protection_6
ICC, 86th floor. Studio 3, a sports bag and navy Asics under the bench. On the far side, floor-to-ceiling windows span the entire width, Victoria Harbour and Hong Kong Island below, the sun coming off the water.

Chloe's in a Nike T-shirt and shorts, teeping a heavy bag. Then knees, jabs, elbows. Roundhouses, left and right, the bag shuddering with each [i]thwack[/i].

Two kicks from the end, her hand goes to her ribs. Another roundhouse, slower.

She sits on the bench and drinks. Deep breaths. She takes out her phone and messages her physiotherapist.

She stretches, packs her bag, and leaves.

*return

*comment Afternoon: Roland/family. Mundane, large acceptance/protection diff
*label chloe_afternoon_acceptance_7
Wan Chai, Fook Lam Moon. Every table's taken, waiters crossing between them. Roland arrives ten minutes late, tie loosened. Chloe and their mother are already eating. They wave.

He puts his phone on the table and eats a [i]har gow[/i] in two bites, hunched over the plate. Then a beef [i]cheung fun[/i]. He turns it over in the soy sauce, tips the plate, and spoons more of the sauce over it.

Chloe looks at him. His eyes are bloodshot. She waits until he's swallowed, then asks, "How's Man U?"

Roland looks up. "Don't."

"I was going to say something encouraging!"

Their mother laughs and pours Roland's tea. His phone buzzes. He reads it, puts the phone down. "I'll head back after lunch."

"Roland —"

Chloe stops. "You sure?"

"Yeah."

"Okay."

Chloe puts the last chicken foot on his plate. "Still warm."

Roland picks it up.

*return

*label chloe_afternoon_acceptance_6
Wan Chai, Fook Lam Moon. Every table's taken, waiters crossing between them. Roland arrives ten minutes late. Chloe and their mother are already eating. They wave.

He puts his phone on the table and eats a [i]har gow[/i] in two bites, hunched over the plate. Then a beef [i]cheung fun[/i].

Chloe waits until he's swallowed, then asks, "How's Man U?"

Roland looks up. "Don't."

"I was going to say something encouraging!"

Their mother laughs and pours Roland's tea. Chloe puts the last chicken foot on his plate. "Still warm."

*return

*label chloe_afternoon_5
Wan Chai, Fook Lam Moon. Every table's taken, waiters crossing between them. Roland's with Chloe and their mother. He eats a [i]har gow[/i] in two bites, then a beef [i]cheung fun[/i].

Chloe waits until he's swallowed, then asks, "How's Man U?"

Roland looks up. "Don't."

"I was going to say something encouraging!"

Their mother laughs and pours Roland's tea. Chloe looks at his plate. "You should eat more."

"I'm eating."

Chloe puts the last chicken foot on his plate.

*return

*label chloe_afternoon_protection_7
Wong Investment Holding Company, Cheung Kong Center. Afternoon light soaks the carpet. Roland's at his desk, tapping the down arrow, and Chloe lies along the sofa, her laptop on the coffee table, shoes kicked off.

"This rice distribution thing is so stupid. Tiny two-kilo bags for the elderly, and then a hundred photos for the PR people."

"Mm-hmm. A humanitarian crisis. Have you confirmed with the elderly centres yet?"

Chloe grunts and forwards him the confirmation.

Roland opens it. "You sorted out delivery, too?"

"Yeah. DCH will truck it over."

"Since when do you know anything about this?"

"They're calling me the Logistics Princess."

Roland looks at her. "No, they're not."

"They could be."

Roland's cheek twitches, almost a smile. "You didn't have to."

"I know."

*return

*label chloe_afternoon_protection_6
Wong Investment Holding Company, Cheung Kong Center. Afternoon light soaks the carpet. Roland's at his desk, tapping the down arrow, and Chloe lies along the sofa.

"This rice distribution thing is so stupid. Tiny two-kilo bags for the elderly, and then a hundred photos for the PR people."

"Mm-hmm. A humanitarian crisis. Have you confirmed with the elderly centres yet?"

Chloe grunts and forwards him the confirmation.

Roland opens it. "You sorted out delivery, too?"

"Yeah. DCH will truck it over."

"Since when do you know anything about this?"

"They're calling me the Logistics Princess."

Roland looks at her. "No, they're not."

"They could be."

*return

*label chloe_evening_partner
*comment Covers both subplot_7 and subplot_6
*comment PC's apartment, routine intimacy
Mong Kok. A truck honks, then a taxi blares, sharper. Ten floors above, ${first_name} clears the drying rack, heaps the clothes onto the desk, and starts folding.

Two knocks, then Chloe's key turns in the lock. She's wearing an emerald silk blouse tucked into a black midi skirt, black pumps, and gold stud earrings. She kicks her pumps off by the door and drops her handbag beside the laundry. Then straight to the fridge for one of her Pocari Sweats. She twists the cap off and takes a long pull.

"Ahh! Nothing better!"

${first_name} keeps folding, the pile growing at one end of the desk. "Mm."

"I had to give a speech to a half-empty room. Someone answered her phone right at the table." Chloe wanders off and is back where she started after six steps.
*if (katie_partner)
    A note is taped to the switch outside the bathroom. Neat block letters: "Water heater!"

    She points at it. "Katie forgot again?"

    "Bullseye."

*else
    She grabs the pull-up bar and hangs, then lets go. "Nope."

    "Uh-huh. I can't do one either."

    She narrows her eyes. "Right."

${first_name} leaves the rest of the laundry and lowers the fold-up bed. $!{he} @{gender_num sits|sits|sit} on the edge, and Chloe drops onto the mattress, her legs across ${first_name}'s lap. $!{he} @{gender_num rubs|rubs|rub} her calf, still looking at the desk.

"Lower?"

$!{he} @{gender_num moves|moves|move} ${his} hand down two centimetres.

"That's better."

*return

*label chloe_evening_friend
*comment Covers both subplot_7 and subplot_6
Ocean Park, late afternoon. Chloe drags ${first_name} past the sea lions. At Thrill Mountain, Chloe points up at the screaming riders. "Whirly Bird?"

${first_name} shakes ${his} head.

"Ugh, fine. Let's win a prize!"

The booths line both sides of the path, plush toys packed in rows behind the counters. Ring toss. Every ring clatters off the bottles, and Chloe throws the last ten all at once. They still miss. Basketball. Three shots each, every one bouncing off the rim. Darts. Direct hits, fast and straight. The flabby balloons don't care.

Chloe flings her arms down. "Ocean Park sucks. Why did we come here?"

"I thought this was your idea."

"No way. You have zero proof!"

${first_name} holds ${his} phone up in front of Chloe's face. She scrolls. She scrolls more, her finger flicking faster.

She pushes the phone away. "Anyway. Shake Shack?"

*return

*label chloe_evening_5
*comment Chloe hasn't apologised.
*comment Chloe and PC train together. Comfortable interaction, but lingering unresolved around Cauldron.
Tsim Sha Tsui, dusk. Chloe holds a punch shield at head height. ${first_name} throws combinations into it.

"Good form... for a kangaroo!"

"Wait, is that good or bad?"

"Don't you wish you knew. More power!"

${first_name} turns ${his} hips with the next cross, smacking the shield. The lead shoulder bunches towards ${his} ear. Chloe lowers the shield and taps ${his} shoulder down with her palm.

$!{he} @{gender_num stiffens|stiffens|stiffen}. Chloe lifts her hand away.

She raises the shield. "Again."

${first_name} punches.

*return
