*save_checkpoint ch7
*set checkpoint7 true
*set fight_opponent_name "James"
*set current_month "October"
Chapter 7: James Yeung

Monday, 30 September 2024

7:50am. The alarm's been scolding you for a while. Your shoulders are sore and your calves are tight. You brush your teeth, chug a glass of Milo, get dressed and bolt out the door.

The train's standing-room only, same as always. Someone's handbag digs into your kidney. As the carriage rumbles along, yesterday comes back. An invisible wall, a rope hauling you forwards, a giant chicken squawking at you.

The chicken was so real, too.

Maybe you'll come across Camille later. But probably not. They'll continue to double over with laughter, and high-step away from punches, their face paint streaked by tears. And you'll continue with your own life.

Time to put the beret out of your mind. The office awaits.

*page_break
Pantry's out of 3-in-1 coffee sachets. Milk tea instead.

There's a new sign on the noticeboard, wedged between "Remember To Wipe Microwave Clean After Heating Meals With Sauces" and "Do Not Mine Bitcoins On Company Computers". You scan the first paragraph:

"We note recent reports of police enforcement actions against illegal fighting competitions. Staff are reminded that participation in such activities may result in injury, permanent disability and death."

You wonder: why are you fighting?

*choice
    #"To find something real, something different from my office job."
        *set fight_reason "I'm fighting to find something real."
        "To find something real, something different from my office job," you mumble to the microwave oven.
    #"To discover where my limits are, and maybe push them."
        *set fight_reason "I'm fighting to discover where my limits are."
        "To discover where my limits are, and maybe push them," you mumble to the microwave oven.
    #"I'm still figuring that out. But I know this is something I need."
        *set fight_reason "I'm still figuring out why I fight."
        "I'm still figuring that out. But I know this is something I need," you mumble to the microwave oven.

A colleague — you think his name is Johnson, or Jack, or maybe Jackson — sees the new sign and sizes up your arms. "Still doing your boxing? You should try these illegal fighting competitions!"

You mumble something. He laughs at his own joke.

*set epithet "potential illegal fighting competitor"
*page_break
*gosub_scene utils show_stats

The text from your promoter arrives on time this month. "You are hereby invited to an amateur boxing match. The match is for charity fundraising. Please note that all events are for entertainment purposes only."

"James Yeung, ABC Boxing. 30 October, 7pm."

You've fought against Muay Thai, Jeet Kune Do, karate. Also a mime. But a boxer?

Well, time for the gym.

*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
*gosub_scene utils check_and_show_achievements
Monday, 14 October 2024
*gosub_scene utils update_highest_friendship
*gosub_scene utils show_stats

You've found out more about James. Old photos on club websites show him sharing hotpot dinners with opponents after matches. He's a regular at club fight nights. Not much on the forums about him — he keeps to the amateur scene.

But all that's from more than a year ago. The boxing news dries up, leaving only LinkedIn updates. His social media activity is mostly "likes" on acquaintances' new job announcements.

And ABC Boxing looks legit, with proper coaches, a clean ring, full classes. They say the full name is "Amateur Boxing Club Boxing", but the sign had already been paid for, so the owner went with it.

Back to MK Fight, where Coach Lam might know something. You see him taking down some photos and yellowed fight cards from the wall.

"Old stuff," he says.
*if highest_trait = "analysis"
    Fewer photos and fight cards. Another data point. The circuit is becoming more cautious.
*elseif highest_trait = "composure"
    You don't press him. If he wants to explain why he's taking them down, he will.
*elseif highest_trait = "empathy"
    He calls them old stuff. But he pulls out the tacks with care. They mean something to him.
*else
    *bug Invalid trait

He doesn't know much about James, but he says coaches at other clubs rate him. Serious about improving.

*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
*gosub_scene utils check_and_show_achievements
Wednesday, 30 October 2024
*gosub_scene utils show_stats

*if (boxing_insights_unspent > 0)
    *gosub_scene upgrades spend_insight_choices

Sheung Wan on Connaught Road Central, near the Central side, not yet at the dried seafood shops. Just after the evening rush. Here, fronting a narrow commercial tower jammed flush against its neighbours, ABC Boxing announces itself with a circular logo, loud in red, black and white.

You descend the stairs to the basement, passing by a rainbow wall of gloves and an LCD display advertising a title fight, the date and venue too small to read. A printout is taped to the glass door, announcing tonight's interclub boxing competition. Four bouts, you and James first up.

*page_break
The referees look like coaches. There are a few dozen spectators, mostly gym-goers in tank tops and shorts, talking about boxing technique. Some sit on the padded floor, others stand. The bookmaker is nowhere to be seen.
*if highest_trait = "analysis"
    Is this even part of the underground circuit?
*elseif highest_trait = "composure"
    People take this seriously. Just how you like it.
*elseif highest_trait = "empathy"
    It feels like people are here to have fun. Your arms loosen.
*else
    *bug Invalid highest_trait

The ring abuts a metal-grille wall of hanging gloves, the ring ropes stacked blue, red, white, black. A white plastic table, two folding chairs behind it. Metal ceiling fans whir overhead, circulating the smell of old sweat.

You make your way to the table and register with the two uncles in ABC Boxing shirts. The one on the right shakes your hand and thanks you for coming. He asks if you're feeling nervous, says it happens to everyone. The other one points you to the changing rooms, past the two speed bags, behind a hanging curtain.

Inside, you change into a singlet and shorts and wrap your hands. Then back to ringside, where the official checks your wraps, running a hand over the knuckles, and grunts, satisfied. He points at a man standing near the table, hands already wrapped, a phone pressed to his ear. The man's discussing where to hold the company's annual dinner.

"That's James, your opponent." The official smiles. "Three rounds, two minutes. Take it easy. That man over by the ring will work your corner."

James raises his hand — a moment, please — then ends the call.
*if highest_trait = "analysis"
    His eyes drift past before they find you again, like he's still running on autopilot.
*elseif highest_trait = "composure"
    His eyes drift past before they find you again, like his head's somewhere else.
*elseif highest_trait = "empathy"
    His eyes drift past before they find you again, like his heart's not fully in this.
*else
    *bug Invalid highest_trait

"Nice to meet you," he says, and crosses to stuff his phone into a gym bag. He returns and shakes your hand. He's your height, tanned to his biceps, thick at the chest and waist.

"We're up first. Let's have a good one."

You put on your gloves and headguard and get in the ring.

*page_break James Yeung.
*gosub james_fight
*gosub_scene utils first_loss_notification
*finish End of Chapter 7.


*label james_fight
*temp dc_easy 24
*temp dc_medium 31
*temp dc_hard 38
*set fight_momentum 5
*set trait_bonus_amount 2
*set upgrade_multiplier 5
*gosub_scene utils calc_adj_stats
The referee turns to the room and announces, "Tonight's first bout: Yeung versus ${last_name}!"

A round of applause. Then you touch gloves, the bell rings, and it's on.

James steps in and puts a jab on your glove. Clean. Heavy for a jab.
    
*gosub_scene utils show_fight_momentum

*fake_choice
    #Jab back, see how he handles it.
        You answer with your own jab. He absorbs it, bobs off the line, and comes back with a one-two that thumps on your gloves.
    #Hang back, watch him a bit longer.
        You hang back. He waits, and then takes the space with a one-two that thumps on your gloves.
You give one back. He pivots, and it goes past his shoulder.

He shows you a jab and you buy it, and then the real ones come — cross, hook — your arms stuttering as the hook clips your jaw. You bite down on your mouthguard, fake a step-in, but his weight barely moves. His feet stay.

That's fine. Jab, cross, hook, cross. Gloves. Gloves. The hook skims his headguard, then gloves again. You go again. His jab comes down the middle and finds your nose as you load the cross.

You're losing the exchanges. Not badly, but you're still losing.

*set fight_momentum -1
*gosub_scene utils show_fight_momentum
*temp tried_pressure false
*temp tried_jab false

*choice
    #Establish your jab first.@{fight_vision  [i](Technique, Power)[/i]|}
        *set tried_jab true
        *gosub_scene utils calculate_trait_bonus "composure"
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_technique * 0.6) + (adj_power * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *set fight_momentum +1
            "When in doubt, jab," Coach Lam says. You're in doubt. You jab. Shoulder in, chin tucked, weight back. Jab goes out, jab comes home. Glove, glove, glove. Headguard. Glove.

            He's not looking to counter; he answers with his own jab. Jab, jab, jab. Jab, jab, jab. It's even. But he's fighting at your range.

        *else
            "When in doubt, jab," Coach Lam says. You're in doubt. You jab. Shoulder in, chin tucked, weight back. Jab goes out, jab comes home. Glove, glove, glove, glove, glove.

            James answers with his own jab, and he's faster to reset. Your glove keeps ending up in front of your face. At least he's not looking to counter.

    #Go in close and pressure him.@{fight_vision  [i](Power, Toughness)[/i]|}
        *set tried_pressure true
        *if ((adj_power * 0.6) + (adj_toughness * 0.4)) >= ((dc_easy * 0.1) + (dc_medium * 0.9))
            *set fight_momentum +1
            Is he solid inside as well? You step through his jab and get inside, hands going to the body. A punch to the ribs, then another. He reaches for a clinch. You frame him with your elbows and keep going.

            He covers up and answers with singles. You're hitting elbows and gloves now, but some get through. Your arms are getting heavy. You're panting and he isn't. An advantage, but one you can't afford again.

        *else
            Is he solid inside as well? You step through his jab and get inside, hands going to the body. A punch to the ribs, then another. He reaches for a clinch. You shove him off and stay on him.

            He covers up and answers with singles. You're hitting elbows and gloves now, and your arms are getting heavy. You're panting and he isn't. Even, but you spent the gas and he didn't.

    #Stay at range, look for counters.@{fight_vision  [i](Mental, Technique)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * counter_level)
        *if (((adj_mental * 0.6) + (adj_technique * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= ((dc_medium * 0.8) + (dc_hard * 0.2))
            A step back. Your lead hand drifts low. He comes forward, jab ahead of him.

            *if (counter_level = 2)
                *set fight_momentum +2
                Your counter goes out automatically, a cross that lands flush on his jaw. His jab stops. He steps out and resets, and he doesn't step in again.
            *else
                *set fight_momentum +1
                Your counter snaps out, a cross that lands on his jaw. His jab stops. He steps out and resets, and he doesn't step in again.

        *else
            A step back. Your lead hand drifts low. He comes forward, guard up.

            A probing jab, no weight behind it. You parry it. His gloves are already back. You give him the opening again, and get the same jab, the same exit.

And then the bell rings.

*page_break
You walk back to your corner and the man from ringside slides a stool under you. He holds out a water bottle. You push your mouthguard into your glove and swill a mouthful around, and just swallow it. A towel comes across your face and then disappears.

"You're doing good. Pace yourself."

Across the ring, James's cornerman has stepped back, arms behind his back. James sits with his hands on his thighs, breathing through his nose.

The bell rings again. You push the mouthguard back in and walk out. You touch gloves. Round two.

You pace yourself, keeping him at a distance. James tests you with twos and threes, the jab always in front. Jab, step. You slip. Jab, hook. You bob. He jabs and resets to his left.

You step in with a one-two and both of them land on his gloves. He hooks, you take it on the glove, then he's out before you reset.

Half a minute of this. You're drifting back to the ropes, not taking any solid hits, but you're not landing anything either. He jabs and steps left. You turn, and he's throwing again.

*gosub_scene utils show_fight_momentum

*choice
    #Beat him to the jab.@{fight_vision  [i](Technique, Toughness)[/i]|}
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_technique * 0.6) + (adj_toughness * 0.4)) + upgrade_bonus) >= dc_hard
            *set fight_momentum +1
            *if (tried_jab)
                Do what works. Shoulder in, chin tucked, weight back, again. You put it on his guard, again and again, beating him to the punch every time.

                He starts to cover up, gloves staying at his face. For every one he throws, you throw two. He's good. But you're better.

            *else
                Shoulder in, chin tucked, weight back. Jab goes out, jab comes home. You put it on his guard, again and again, beating him to the punch every time.

                He starts to cover up, gloves staying at his face. For every one he throws, you throw two. He's good. But you're better.

        *else
            *if (tried_jab)
                Do what works. Shoulder in, chin tucked, weight back, again. You put it on his guard, again and again, and he puts it right back on you.

                Stalemate. He refuses to cede. Jab, jab, jab. Jab, jab, jab.

            *else
                Shoulder in, chin tucked, weight back. Jab goes out, jab comes home. You put it on his guard, again and again, and he puts it right back on you.

                Stalemate. He refuses to cede. Jab, jab, jab. Jab, jab, jab.

    #Meet him when he steps out.@{fight_vision  [i](Power, Mental)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *if (((adj_power * 0.6) + (adj_mental * 0.4)) + trait_bonus_applied) >= ((dc_easy * 0.5) + (dc_medium * 0.5))
            *set fight_momentum +1
            You take his jab on the glove. Then you throw a cross to his left without looking. He steps into it, taking it flush on the nose.

            He clears his head and guards tight. Next jab, he steps out to the right.

        *else
            You take his jab on the glove. Then you throw a cross to his left without looking. He steps into it, but gets a glove up, just in time.

            He backs off, hands high. Next jab, he steps out to the right.

    #Close the distance and unload.
        *if (tried_pressure)
            You guard the next cross and close in, throwing to the body. He covers up and answers with singles, again.

            It doesn't work any better now. You hit elbows and gloves, your arms get heavier, you're panting. He isn't.

        *else
            You guard the next cross and close in, throwing to the body. He covers up and answers with singles.

            You're hitting elbows and gloves now, and your arms are getting heavy. You're panting and he isn't. Even, but you spent the gas and he didn't.

Your gloves are getting heavy.

The bell rings.

*page_break

You walk back to your corner and sit down. Mouthguard out, a quick slosh, mouthguard in. The towel again, more to wipe away this time.

*if (fight_momentum > 5)
    "Nice work. Keep it up. One more round."
*elseif (fight_momentum = 5)
    "Keep it up. One more round."
*else
    "Hang in there. One more round."

A few more breaths, and the bell rings again. Meet. Touch gloves.

James comes out fast, jab-cross, jab-hook, hands going. His punches hammer your guard, he hooks around the edges, tries an uppercut up the middle. You give ground: slip the jab, weave under the hook, parry the cross, then the uppercut comes and you take it on the glove, another hook arrives...

He keeps it up. Then, just as your arms start to drop, his jab loses a little snap, his crosses have less power, his feet go flat. But your hands go low and your head stops moving. A blur of punches and gloves. More clinches, messier clinches. Both of you panting, sweat stinging your eyes. Wild hooks, thrown cold. Can't keep your guard up.

Too tired. Too tired to think.

Just trust your body and go.

*gosub_scene utils show_fight_momentum

*choice
    #Trust your jab. Keep putting it in front of him.@{fight_vision  [i](Toughness, Technique)[/i]|}
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_toughness * 0.6) + (adj_technique * 0.4)) + upgrade_bonus) >= dc_medium
            *set fight_momentum +1
            You just put your jab in front of him. Glove, glove, face, glove. He walks into another one, then stumbles back.

            In the final seconds, both of you stand there at range, knocking on each other's guard with the same straight jab. A suitable way to end this match.
        *else
            You just put your jab in front of him. Glove, glove, glove, glove. He lands a jab on your headguard, then the rest on your gloves.

            In the final seconds, both of you stand there at range, knocking on each other's guard with the same straight jab. A suitable way to end this match.

    #Trust your defence. Let your guard and movement find the punches.@{fight_vision  [i](Toughness, Technique, Mental)[/i]|}
        *temp defence_score 0
        *temp used_defence ""
        *if (block_level = 2)
            *set upgrade_bonus (upgrade_multiplier * block_level)
            *set used_defence "block"
        *elseif (dodge_level = 2)
            *set upgrade_bonus (upgrade_multiplier * dodge_level)
            *set used_defence "dodge"
        *elseif (counter_level = 2)
            *set upgrade_bonus (upgrade_multiplier * counter_level)
            *set used_defence "counter"
        *elseif (block_level = 1)
            *set upgrade_bonus (upgrade_multiplier * block_level)
            *set used_defence "block"
        *elseif (dodge_level = 1)
            *set upgrade_bonus (upgrade_multiplier * dodge_level)
            *set used_defence "dodge"
        *elseif (counter_level = 1)
            *set upgrade_bonus (upgrade_multiplier * counter_level)
            *set used_defence "counter"
        *else
            *set upgrade_bonus (upgrade_multiplier * block_level)
            *set used_defence "block"
        *if (used_defence = "block")
            *set defence_score ((adj_toughness * 0.7) + (adj_mental * 0.3))
        *elseif (used_defence = "dodge")
            *set defence_score ((adj_technique * 0.6) + (adj_toughness * 0.4))
        *elseif (used_defence = "counter")
            *set defence_score ((adj_mental * 0.6) + (adj_technique * 0.4))
        *else
            *bug Invalid used_defence
        *if (defence_score + upgrade_bonus) >= dc_medium
            *set fight_momentum +1
            *if (used_defence = "block")
                You just put your guard up. Everything absorbed on the gloves. A pot-shot back, one or two. He walks into a weak jab, then stumbles.

                In the final seconds, both of you stand there at range, guard up, both too exhausted. A suitable way to end this match.
            *elseif (used_defence = "dodge")
                Your hands lower a bit. His punches have gone soft now. You slip and tag him with a weak punch. He walks into another one, then stumbles back.

                In the final seconds, both of you stand there at range. You're waiting for the next punch, but he just guards. A suitable way to end this match.
            *elseif (used_defence = "counter")
                You set your hands. His punches have gone soft now. You snap him out of his wind-up with a jab. He stumbles back.

                In the final seconds, both of you stand there at range. You're waiting for the next punch, but he just guards. A suitable way to end this match.
            *else
                *bug Invalid used_defence
        *else
            *if (used_defence = "block")
                You just put your guard up. Everything absorbed on the gloves. You can't get anything off. His punches come slower.

                In the final seconds, both of you stand there at range, guard up, both too exhausted. A suitable way to end this match.
            *elseif (used_defence = "dodge")
                Your hands lower a bit. His punches have gone soft now. You slip what you can. Sometimes he clips you, sometimes you tag him.

                In the final seconds, both of you stand there at range. You're waiting for the next punch, but he just guards. A suitable way to end this match.
            *elseif (used_defence = "counter")
                You set your hands. His punches have gone soft now. You snap him out of his wind-up with a jab. Next time, your counter's late and his jab gets through.

                In the final seconds, both of you stand there at range. You're waiting for the next punch, but he just guards. A suitable way to end this match.
            *else
                *bug Invalid used_defence
    #Trust your hands. Let the jabs and combinations and flurries come.@{fight_vision  [i](Technique, Power, Toughness)[/i]|}
        *temp attack_score 0
        *temp used_attack ""
        *if (combo_level = 2)
            *set upgrade_bonus (upgrade_multiplier * combo_level)
            *set used_attack "combo"
        *elseif (flurry_level = 2)
            *set upgrade_bonus (upgrade_multiplier * flurry_level)
            *set used_attack "flurry"
        *elseif (combo_level = 1)
            *set upgrade_bonus (upgrade_multiplier * combo_level)
            *set used_attack "combo"
        *elseif (flurry_level = 1)
            *set upgrade_bonus (upgrade_multiplier * flurry_level)
            *set used_attack "flurry"
        *else
            *set upgrade_bonus (upgrade_multiplier * combo_level)
            *set used_attack "combo"
        *if (used_attack = "combo")
            *set attack_score ((adj_technique * 0.5) + (adj_power * 0.5))
        *elseif (used_attack = "flurry")
            *set attack_score ((adj_power * 0.6) + (adj_toughness * 0.4))
        *else
            *bug Invalid used_attack
        *if (attack_score + upgrade_bonus) >= dc_medium
            *set fight_momentum +1
            *if (used_attack = "combo")
                You go for the basics: jab, cross. Glove, glove. Glove, face, glove. He walks into another one, then stumbles back.

                In the final seconds, both of you stand there at range, knocking on each other's guard with one-twos. A suitable way to end this match.

            *elseif (used_attack = "flurry")
                You unload with what little you have left, just arms now. Volume, not power. He shells up, one or two get through, he stumbles back.

                In the final seconds, both of you stand there at range. You're out of gas, but so is he. A suitable way to end this match.
            *else
                *bug Invalid used_attack
        *else
            *if (used_attack = "combo")
                You go for the basics: jab, cross. Glove, glove. Glove, glove, glove. He shells up, not taking any hits.

                In the final seconds, both of you stand there at range, guard up, waiting for the other one to punch. A suitable way to end this match.

            *elseif (used_attack = "flurry")
                You unload with what little you have left, just arms now. Volume, not power. He shells up, absorbing it all.

                In the final seconds, both of you stand there at range. You're out of gas, but so is he. A suitable way to end this match.
            *else
                *bug Invalid used_attack

Finally, the bell.

*page_break
*comment win at fight_momentum 6+
James holds out a glove, a small tremble in his arm. You touch gloves and go back to your corner, then sit on the stool and breathe. Mouthguard out. Your cornerman holds up a bottle of water and you chug it.

Once your breathing settles, the referee calls you back to centre. He stands between you and James and takes a wrist in each hand. The official at the table says,
*if (fight_momentum > 5)
    *set record_wins +1
    *set james_result "win"
    "First bout. Winner on points: ${last_name}."

    The referee raises your hand. A few people clap.

    James holds out a glove again and you tap it. "Good fight."

    "Good fight."

*else
    *set record_losses +1
    *set james_result "loss"
    "First bout. Winner on points: Yeung."

    The referee raises James's hand. A few people clap.

    You hold out a glove and James taps it. "Good fight."

    "Good fight."

The ringside medic asks, "Any injuries?"

You both shake your heads and climb out through the ropes. Off go the gloves and headguard.

You head for the showers. Hot water, high pressure. You take your time.

*page_break
Good shower.

You head back out into the gym, where the second match is under way. James's bag is already gone.

You stay and watch. They punch each other and try not to get punched. Maybe this is what boxing is about.

[i]A Boxing Insight develops.[/i]
*set boxing_insights_unspent +1
*return
