*save_checkpoint ch3
*set checkpoint3 true
*set fight_opponent_name "Danny"
*set current_month "June"
*set current_season "summer"
*set epithet "mosquito vanquisher"
Chapter 3: Danny "The Dragon" Chan

Friday, 31 May 2024

You wake the next morning from uneasy dreams to find yourself confronted by an enormous mosquito. You grab the electric racket where it leans against the wall. The crackling [i]bzzt[/i] is too satisfying.
*if highest_trait = "analysis"
    You're already fully awake. Heart beating fast. 
*elseif highest_trait = "composure"
    Muscles ready. Still on edge after yesterday's fight.
*elseif highest_trait = "empathy"
    You feel everything. Even the fried mosquito smells of electricity.
*else
    *bug Invalid highest_trait

The heat clings to you through the day like plastic wrap. You move slowly whenever you're outside, and you drink more water. You feel thankful for the air conditioning at the office. It makes the spreadsheets feel more meaningful.

*page_break
The next morning, your phone buzzes with a message from your promoter. "Danny Chan. 28th June."

You look it up. Danny "The Dragon" Chan, always clad in a distinctive yellow tracksuit with black stripes. He has a large online presence, with forum posts and fan websites enthusiastically analysing his technique. You find lots of high-resolution videos featuring a lean, middle-aged man who performs Bruce Lee's moves, but slowly. Interestingly, you don't see any evidence that he's won a single match.

Later, at MK Fight, you ask Coach Lam if he knows anything more about Danny Chan. His expression changes. Respect?

"Danny Chan," he begins slowly. "Self-taught Jeet Kune Do. Not the most talented fighter, but possibly the most dedicated." He guides your elbows lower. "Don't let his record fool you. It might look like an easy win, but no one leaves a fight with Danny feeling like they've won."

*choice
    #There's something admirable about that.
        *gosub_scene utils increase_empathy
        It doesn't seem to be pride or stubbornness. Something else. He just keeps going.

        Is there any meaning to this? You can't imagine any. But you respect his dedication.

    #This could be noble, but it could just be delusion.
        *gosub_scene utils increase_composure
        He keeps getting knocked down. Keeps getting back up. You don't know if this is courage or foolishness.

    #His popularity makes sense. People root for the underdog.
        *gosub_scene utils increase_analysis
        His fans all see the losses. But they don't seem to mind.
        
        You keep reading. Detailed technical breakdowns. Match analyses. Even fan fiction. What you never find: excuses for his match record.

A guy who loses every match but still draws a crowd. Someone who gets tribute posts and dragon emojis and forum threads to celebrate his endless losses.

*page_break
Saturday, 1 June 2024
*gosub_scene utils show_stats

You find yourself rewatching Danny's fights in the evening. In one clip, he takes a brutal liver shot that should end the fight instantly. The camera zooms in on his prone form. He rises slowly, standing at the count of seven, then adjusts his black wristband and continues. In another video, completely outclassed, he absorbs heavy punishment and is unable to lay a finger on the opponent. Between rounds, he sits peacefully in his corner.

Your flat feels especially cramped tonight.

You close your laptop and press your face against the window. Hong Kong's night skyline compresses into a light show, thousands of lit and unlit windows reduced to pixels.

You push away from the window.
*if highest_trait = "analysis"
    Somewhere in that grid of light, Danny is training. The same inputs leading to the same outputs.
*elseif highest_trait = "composure"
    Somewhere out there, Danny trains. Same as yesterday, same as tomorrow.
*elseif highest_trait = "empathy"
    Somewhere out there, Danny trains, alone. You wonder what it feels like, to keep showing up, but losing every time.
*else
    *bug Invalid trait

*gosub_scene utils tick_character_cooldowns
*gosub_scene utils character_unvisited_check
*gosub_scene utils fortnight_choice
*gosub_scene utils show_stats
*gosub_scene utils character_visit_options
*gosub_scene utils character_visit_choice
Saturday, 15 June 2024
*gosub_scene utils show_stats

The second half of June. The heat outside rises early and lingers late. Inside, though, it's the opposite. The office is a refrigerator. The MTR is cold enough that even the tight press of bodies doesn't provide enough warmth. You shiver through meetings, sweat on the brief walk to lunch, then shiver again back at your desk.

At MK Fight, the fans rattle and squeak, completely failing to dispel the heat. You sweat through it and walk home with your shirt stuck to your body. Your mind drifts to Danny again. You find yourself mouthing phrases he might say. [i]"Adaptation, not imitation." "Be like water."[/i] The words sound wise.

*if highest_trait = "analysis"
    You've been training for a physical fight. Maybe you need to approach things differently; you still have no idea how this fight will play out. Regardless, you'll be there.
*elseif highest_trait = "composure"
    Nothing changes. You train. You fight. You still have no idea how this fight will play out. Regardless, you'll be there.
*elseif highest_trait = "empathy"
    You still don't understand why he keeps fighting. Maybe you'll find out when you meet him.
*else
    *bug Invalid trait

*gosub_scene utils tick_character_cooldowns
*gosub_scene utils character_unvisited_check
*gosub_scene utils fortnight_choice
*gosub_scene utils show_stats
*gosub_scene utils character_visit_options
*gosub_scene utils character_visit_choice
Friday, 28 June 2024
*gosub_scene utils show_stats

*if (boxing_insights_unspent > 0)
    *gosub_scene upgrades spend_insight_choices

You tell your team leader that you have a family obligation and need to leave early. You push through the evening crowds, gym bag pressed against your shoulder. Your gear has improved since your first match: a properly fitted mouthguard, quality hand wraps, and sturdy leather gloves.

Tonight you're fighting at an abandoned warehouse in Kwun Tong. The taxi driver shoots you a knowing look when you give him the address, but says nothing.

The corrugated metal walls of the warehouse throw long shadows as the sun sets. Some kind of drum-and-bass track pulses through your feet before you even reach the entrance. Across the street, a small surveillance camera on a utility pole blinks red.
*if highest_trait = "analysis"
    Government, not private.

With a few matches under your belt, you're no longer a total unknown. You want something from all of this, even if you'd rather not admit it.

*fake_choice
    #You want the people at MK Fight to see you as a real fighter.
        You want the people at MK Fight to see you as a real fighter. Still new, still learning, but someone who belongs there.

    #You want this strange life to keep getting stranger.
        You want this strange life to keep getting stranger. More fighters who don't make sense. More places you'd never go to otherwise.

    #You want someone to notice if you stopped showing up.
        You want someone to notice if you stopped showing up. Someone.

The air in the warehouse is dense and hot, hitting you with a cocktail of sweat, metal, and tropical fruit. The crowd strikes you the most. It must be a thousand strong, the warehouse packed to capacity. Almost everyone wears yellow T-shirts with a black dragon silhouette.

As you pass through the crowd, you spot Danny seated in a corner. He's staring at his shoes. A fan tries to snap a selfie with him. Danny doesn't notice.

The bookmaker from your previous fights is seated near the front, tablet in hand, wearing a yellow dragon T-shirt like the rest of the audience. "No odds tonight," he says. "It's not that kind of fight."

He gestures at the crowd with his arm. "People are here to witness."

A thousand witnesses. A sea of yellow. You don't know what your role is here. Your stomach tightens.

*if highest_trait = "analysis"
    Uniforms, symbols, chants. A mass movement, with no message, no demand.
*elseif highest_trait = "composure"
    You've been in crowds like this before, for causes you believed in.
*elseif highest_trait = "empathy"
    The crowd's mood isn't exuberant. It feels more earnest, more serious.
*else
    *bug Invalid trait

*page_break Danny "The Dragon" Chan.
*gosub danny_fight
*gosub_scene utils first_loss_notification
*finish End of Chapter 3.



*label danny_fight
*temp dc_easy 11
*temp dc_medium 14
*temp dc_hard 17
*set fight_momentum 5
*set trait_bonus_amount 2
*set upgrade_multiplier 4
Everywhere in the crowd, banners flutter, some hand-drawn, some printed, all of them yellow with a black dragon silhouette. The front row starts a chant: "Dragon... dragon... dragon..."

It spreads through the crowd, row by row, until the arena is filled with a low, rhythmic hum. They chant with one voice.

You stand at the edge of the prep room. The cloth curtains are parted, and you catch glimpses of the crowd.
*if highest_trait = "analysis"
    Everyone in neat rows and columns, a grid of yellow and black.
*elseif highest_trait = "composure"
    The chant continues, but nobody moves with it.
*elseif highest_trait = "empathy"
    Some of them are looking down at their phones.
*else
    *bug Invalid trait
Inside, the other fighters stretch, wrap their hands, pace around.

Danny's there too, standing by himself near a corner. He's shorter than you by an inch or two, with a slight frame and a salt-and-pepper buzz cut. He's wearing a yellow tracksuit with black stripes. It's spotless, clean, although the colour is faded and the fabric is frayed at the elbows.

He pulls a thin black wristband from the gym bag at his feet and loops it around his left wrist. He closes his eyes and breathes out.

Then he steps forward, looks you in the eye, and nods. You stand beside him, facing the curtains. The chant picks up. A few spectators lean over the barricades.

*choice
    #Consider the scene. The banners, the uniforms, the chanting.
        *gosub_scene utils increase_analysis
        The chant isn't spontaneous, but it's not orchestrated, either. People join in however they wish.

    #Watch how the crowd leans towards him.
        *gosub_scene utils increase_empathy
        They're cheering for Danny, but some of them look like they're just here to witness him.

    #Focus on your breath. Let the noise pass through you.
        *gosub_scene utils increase_composure
        Breathe in, breathe out. You take in the crowd's chat, the background noise, Danny's calm. You take all of it in, but you don't dwell on it. 

Danny steps out.

The chant rises. "Dragon... dragon..."

You follow.

You take in the ring: seven metres square, plain canvas, bordered by gym mats with waist-high steel barricades behind. You step onto the canvas, and the crowd seems closer. The banners loom larger. The air is warmer. The floodlights overhead glare down at you.

Danny's in the centre of the ring. He bows once to each side of the crowd, and the chant breaks into a roar: "DRAGON!"

Then it ceases. Danny turns to you and salutes, a fist pressed to an open palm. You offer your glove, and he meets it. The bell rings. He drops into his stance: side-on, lead hand extended, rear foot angled back.

You stay at range. Danny holds the centre and beckons you with his hand.

*page_break
Your first ${jab} lands cleanly on his chin, a light but solid hit. His counter whooshes past your cheek, a straight punch that's a beat too slow. He shows no surprise and resets his stance, weight shifting to his back leg.

Another light jab hits him in the cheek. Twice now, he's moved much too slowly. His face is blank and his stance loose. He exhales smoothly and resets. He beckons you again.

You move in with a one-two, then out. He intercepts both, then resets. Sweat's already at his temple. You circle left; he turns with you, feet crossing behind, arms moving in slow arcs.

He hasn't once initiated. You could be shadowboxing. You could be working a free-standing bag, the kind that rights itself after every punch.

*if highest_trait = "analysis"
    Every movement is precise, starting from the same point every time, ending at the same point every time. But he's not reacting to you. You're sparring with a flowchart.

*elseif highest_trait = "composure"
    He's lost every exchange so far. But if anything, he's slowed down. His form becomes even more precise, every limb in the right place.

*elseif highest_trait = "empathy"
    He's trying to perfect something. But whether any of it hits you, that doesn't seem to be a factor.

*else
    *bug Invalid trait
*set fight_momentum +1
*gosub_scene utils show_fight_momentum

*choice
    #Probe his defences with your ${jab}.@{fight_vision  [i](Mental, Technique)[/i]|}
        *gosub_scene utils increase_analysis
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_mental * 0.5) + (adj_technique * 0.5)) + upgrade_bonus) >= ((dc_medium * 0.5) + (dc_easy * 0.5))
            *set fight_momentum +1
            You send out your ${jab}. It grazes his chin, his parry arriving after. Another, again clipping the chin.

            He returns to where he started, back leg loaded, lead hand out.

            One more. Chin again.

        *else
            You send out your ${jab}. His forearm meets it, arriving on schedule. Another, again on his arm.

            He returns to where he started, back leg loaded, lead hand out.

            One more. Parry again.

    #Go on the offence with your ${combo}.@{fight_vision  [i](Power, Technique)[/i]|}
        *set upgrade_bonus (upgrade_multiplier * combo_level)
        *if (((adj_power * 0.5) + (adj_technique * 0.5)) + upgrade_bonus) >= ((dc_medium * 0.8) + (dc_easy * 0.2))
            *set fight_momentum +1
            Jab-cross. Jab-cross. Danny's block is flawless, and one punch behind. Both times, it catches only the cross.

            A hook goes round the block and sinks into his cheek. His head snaps to the side. He returns to where he started, back leg loaded, lead hand out.

        *else
            Jab-cross. Jab-cross. Danny gives ground, letting you have the space.

            Jab-cross-hook. His forearms take the first two. His palm takes the hook. A straight comes back down the centre, onto your guard.

    #Test his limits with your ${flurry}.@{fight_vision  [i](Toughness, Power)[/i]|}
        *set upgrade_bonus (upgrade_multiplier * flurry_level)
        *if (((adj_toughness * 0.7) + (adj_power * 0.3)) + upgrade_bonus) >= dc_medium
            *set fight_momentum +2
            Your punches snap out, high, low, high, low, high. Glove meets forearm. Glove meets palm. Glove meets ribs.

            Again. The same blocks, in the same order. The next punch grazes his cheek, then another clips his chin.

            Enough for now. He returns to where he started, back leg loaded, lead hand out.

        *else
            Your punches snap out, high, low, high, low, high. Glove meets forearm. Glove meets palm. Glove meets air.

            Again. The same three, in the same order. He's a metre back from where you started.

            Enough for now. He returns to where he started, back leg loaded, lead hand out.

    #Hold back for now. Fight at his pace.
        *gosub_scene utils increase_empathy
        *set danny_friendship +1
        You stay in range, guard up, throwing nothing. Danny looks you in the eye and nods. He pushes off the back leg and comes forward with a straight.

        It lands on your guard. You return a jab. The jab meets his palm.

        He returns to where he started, back leg loaded, lead hand out.

The round continues, nothing landing hard. He blocks on schedule. You oblige with jabs. The crowd continues chanting. "Dragon... dragon..."

You step in with a jab, and Danny answers with an intercepting fist, his punch meant to catch yours on the way in. It's slow, much too slow, and his arm is extended as your cross arrives. It crunches into his jaw.

The chant dies.

Danny staggers back, sits, then lies down. He stays there, looking at the floodlights. One. Two. Three. Four. Five.

He rises and brushes the dust from his sleeves. The chant restarts.

He returns to his stance and beckons.

Jab, body shot, cross. He falls again. He rises before the referee steps in.

The chant grows, and grows, and rises into a roar, then —

It vanishes.

*page_break Out of sync.
The crowd has stopped. Danny has stopped too, mid-blink, back heel lifted, arms up.

So has the referee. And the light. And the dust.

And you, too.

You look around without moving your eyes. A teen in a yellow T-shirt, leaning forward in his seat, his eyes wide. The bookmaker, mouth suspended open, arm raised in a fist. The ceiling fans, spinning, motionless.

Your gloves are up. Your weight is on your back foot.
*if highest_trait = "analysis"
    You have full control of your body, but you ask nothing of it. You could move. But you don't have the [i]intention[/i] to move.
*elseif highest_trait = "composure"
    Your body is still yours. You could move. But you don't have the [i]intention[/i] to move.
*elseif highest_trait = "empathy"
    No one is in any hurry. You could move. But you don't have the [i]intention[/i] to move. 
*else
    *bug Invalid trait

You're here, in this moment, with no need to know how you got here. It feels empty, but not hollow.

*choice
    #Stay a while longer.
        *gosub_scene utils increase_empathy
        You stay where you are. The dust catches the light.

        The desire to act returns gradually. You don't hurry it. You breathe. In. Out. In. Out.

        Enough.

    #Look at Danny again.
        *gosub_scene utils increase_analysis
        You look at Danny again. Lead hand extended, rear fist at his chin, back foot at forty-five degrees.

        You can't spot a single flaw.

    #Let this happen.
        *gosub_scene utils increase_composure
        You don't know how Danny offered this to you. You don't ask what this is. 

        You remain here for a while longer. You're not participating, not directly. You're just accepting his invitation.

*page_break Return.
The ceiling fans whir. The banners flutter. The dust falls.

A thousand people, watching.

Danny hasn't moved. His arms are up, his eyes on you.

You haven't moved. Your guard is up, your feet planted.

Everyone's waiting.

*set fight_momentum 5
*gosub_scene utils show_fight_momentum
*choice
    #Try to understand what happened.
        *gosub_scene utils increase_analysis
        You work through what happened. Everything stopped, except you. How long was it?

        You'll come back to this later. The fight is still on.

    #Consider whether Danny shared something with you.
        *gosub_scene utils increase_empathy
        *set danny_friendship +1
        Danny's looking at you. He knows. He waited for you.

        Or he doesn't. It doesn't matter. Either way, the fight is still on.

    #Accept what happened without needing to explain it.
        *gosub_scene utils increase_composure
        *set danny_friendship +1
        You accept what happened. You don't need to explain it. Your breath settles. The fight is still on.

Danny presses his fist to his palm. Then he steps into a side kick, tracing a clean line to your chest.

You absorb the kick on your guard. It sinks in, soft, and Danny retrieves it, back into his stance. You don't counter.

Your turn. A jab, out and back along the same line. Then a cross, your hip turning with it. Danny advances with a chain of vertical punches, and they arrive as a barrage of light taps.

A few more exchanges. Light contact. You place each punch where you want it, and take his where he wants them.
*if highest_trait = "analysis"
    Boxing and Jeet Kune Do, side by side.
*elseif highest_trait = "composure"
    Your shoulders come down an inch.
*elseif highest_trait = "empathy"
    You listen to Danny's breathing. It's heavier now.
*else
    *bug Invalid trait

No one cheers.

The bell is close. One last exchange.

*set fight_momentum +1
*gosub_scene utils show_fight_momentum
*choice
    #Fight seriously. This is still a competition.@{fight_vision  [i](Mental, Technique)[/i]|}
        *gosub_scene utils increase_analysis
        *set danny_friendship +1
        *if ((adj_mental * 0.5) + (adj_technique * 0.5)) >= ((dc_medium * 0.5) + (dc_easy * 0.5))
            *set fight_momentum +1
            You step forward. Your jab goes over his lead shoulder, grazing his cheek. Your cross follows the same line and finds his jaw.

            Danny takes both. Then he places his fingertips against your glove; his hand closes into a fist, and he drives it through from there. One-inch punch. You slide back a half-step.

            A last one-two. He takes the jab on his palm and slips the cross.

        *else
            You step forward. Your jab lands on his lead shoulder. Your cross follows, meeting his palm.

            Danny places his fingertips against your glove; his hand closes into a fist, and he drives it through from there. One-inch punch. You slide back a half-step.

            A last one-two. He takes the jab on his palm and slips the cross.

    #Respect the moment. Focus on your form.
        *gosub_scene utils increase_composure
        *set danny_friendship +2
        You match Danny's rhythm. His guard absorbs your jab. You follow with a cross, deflected by his palm. You slip his straight lead punch, and you both reset.

        The conversation continues. Jeet Kune Do. Boxing.

        Your punches land on his guard or slide past into air. You could dodge his slow backfist, but instead you take it on your guard. A gentle impact.

        Your eyes meet. An acknowledgement.

    #Try to knock him down with a full-force uppercut.@{fight_vision  [i](Power, Toughness)[/i]|}
        *if danny_friendship > 0
            *set danny_friendship -1
        *if ((adj_toughness * 0.3) + (adj_power * 0.7)) >= ((dc_medium * 0.8) + (dc_hard * 0.2))
            *set fight_momentum +2
            One massive strike to shatter whatever this is.

            Danny launches a straight blast down the centre, punch after punch, his chin exposed above them. You dip. You drive up off the back foot.

            Your uppercut lands flush on his chin. His head snaps back. He goes down.

            The crowd gasps. Danny sits up, knees together, palms flat on the canvas. His eyes are open. He looks straight ahead.

            He rises at the count of seven. The crowd rises with him, silent.

            He meets your eyes. He adjusts his black wristband.

        *else
            One massive strike to shatter whatever this is.

            Danny launches a straight blast down the centre, punch after punch, his chin exposed above them. You dip. You drive up off the back foot.

            Danny's weight goes back. Your uppercut finds air.

            A gasp from the crowd, then nothing. You stumble forward, and Danny gives ground another step.

            He meets your eyes. He adjusts his black wristband.

The bell clangs. The end of the final round. The crowd settles.

*page_break
You don't know what you expected. Applause? Relief?

The referee raises your hand. Clapping starts in three separate places, each burst stopping before the next begins. Danny stands with his shoulders square and his eyes forward. The referee steps off the canvas.

*if (danny_friendship <= 0)
    Danny doesn't look your way. He steps past you, towards the crowd, and bows.
*elseif (danny_friendship = 1)
    Danny turns his head to you. A glance, then he bows to the crowd.
*else
    Danny turns to you. He touches his black wristband, then places a palm over his heart. Then he bows to the crowd.

Then the applause swells, a thousand people clapping, the sound landing in your chest. No one smiles.

They're here to witness.

You look down. Your arms are still tense, your breathing shallow.

*choice
    #Stay with this feeling.
        *gosub_scene utils increase_composure
        You don't try to name the feeling. Your muscles pulse. Your skin's soaked with sweat.

        You breathe deep. In, out.

    #Try to understand what Danny was doing.
        *gosub_scene utils increase_analysis
        You retrace the fight. Somewhere in it, you took on his rhythm. You can't locate where.

        There's no mechanism for that. You set the thought aside.

    #Wonder how Danny became who he is now.
        *gosub_scene utils increase_empathy
        You imagine Danny, practising the same kick ten thousand times.

        Meanwhile, the world moves on. How long does it take for a dream to die?

As Danny leaves the ring, fans reach out. Hands open, fingers brushing his shoulder, his sleeve.

A fan holds out a T-shirt and marker. Danny declines. "Just here to train," he mumbles. He exits.

The fan shrugs and throws the T-shirt to you. "For you," he shouts. Black dragon on the front, nothing on the back. Size XXS.

You walk off the canvas, through the prep room and onto the pavement. A wind comes down the street, cooling the sweat on your neck. You breathe it in.

*if highest_trait = "analysis"
    Danny's sequences. Every one of them was flawless. And every one played out to the end, whatever you did.
*elseif highest_trait = "composure"
    You stand straighter now.
*elseif highest_trait = "empathy"
    You won. Danny moved, and you moved with him.
*else
    *bug Invalid highest trait

[i]A Boxing Insight surfaces.[/i]
*set boxing_insights_unspent +1
*set record_wins +1
*set danny_result "win"
*set danny_subplot_status "available"
*set danny_unvisited_timer 0
*return