*save_checkpoint ch6
*set checkpoint6 true
*set fight_opponent_name "Camille"
*set current_month "September"
*set current_season "autumn"
Chapter 6: Camille "The Mime" Durand

Sunday, 1 September 2024

Raindrops patter on the exterior air-con unit. A grey sky greets you as you draw back the curtains. The clock reads 8:35am, later than usual. Downstairs for small-boat congee with a fried-dough roll, and then into MK Fight.

Or you try to. The metal shutter is pulled down. The A4 paper taped to it reads, "Closed for personal reasons. Reopening Monday."

That's unusual. MK Fight has never closed without warning before.

You message Coach Lam. "How are you? Is everything okay?"

A reply: "Lunch? Haven't had Yunnan rice noodles in a while."

You've never actually had lunch with Coach Lam before, despite all the hours on the pads. You say yes.

*choice
    #Hear what he's not saying.
        *gosub_scene utils increase_empathy
        He didn't answer your question. Something's bothering him, but he'll say it when he's ready.

    #Reserve judgement until you've heard what he has to say.
        *gosub_scene utils increase_composure
        He doesn't waste words. You'll be ready when he says it.

    #Think about why the gym is closed.
        *gosub_scene utils increase_analysis
        Closed for exactly one day, for personal reasons? It doesn't line up, but you don't have the whole picture. He's the one with the missing piece.

You meet at one of the Tamjai noodle shops. You don't particularly care which one of the Tamjai chains it is. Coach Lam is wearing a windbreaker over a plain white T-shirt and ripped jeans. He's already ordered his meal — clear-soup rice noodles with fishballs, ham, and an iced lemon water — and you tell the waiter your order as well.

An attempt at small talk, and then you wait as he eats. Coach Lam's finished his noodles by the time your order arrives. You shovel down the noodles while he stirs his drink with the straw and takes small sips.

He sits back and says, "You know your fights? The police invited the organisers for tea yesterday. And a pair of policewomen showed up at the gym and asked me some questions. Very polite.

"I didn't know anything, of course, but I felt it better to take the day off. Give the police some face."

He stands and claps you on the shoulder, tells you to take your time. Says he'll see you tomorrow.

*page_break
Monday, 2 September 2024

You're midway through a spreadsheet when a text arrives from your promoter. "Free to meet? Please suggest your availability: time, date, district."

A meeting? You've never seen her in person. You can fit something in after today's client meeting, so you suggest 4pm in Mong Kok. A few minutes later, a reply. "Meet at KFC, corner of Portland and Shantung."

You go there at 4pm and order an afternoon tea set on your app. Hot & spicy thigh, chicken à la king rice, hot lemon water. You take your tray and find a seat. Few people are around, but the street noise pours in through the open doors: engines, brakes, horns.

As you start eating, you see a slight man in thick glasses, backpack worn tight, T-shirt reading "ANTI SOCIAL SOCIAL CLUB". He approaches your table, KFC paper cup in one hand, phone in the other. He looks down at his phone, looks back at you, and takes the seat opposite, the chair legs screeching on the tiles. "${first_name} ${last_name}?"

You nod. He shakes your hand, his palm damp. "I'm just a part-timer. Got a message for you."

He sets his cup down, the milk tea sloshing to the rim, and reads from his phone:

"Please note the following changes. Not as many spectators allowed now. Invitation-only."

"Don't photograph, identify, or talk about other competitors in public."

He takes a breath, then reads on. "Other competitors' contact details are no longer shared. Please keep contact to a minimum. Thank you for your cooperation."

He downs the rest of the milk tea in a single gulp, and then squeezes his eyes shut and grimaces. Too hot. Then he leaves.

*choice
    #Don't get up. Keep eating.
        *gosub_scene utils increase_composure
        *gosub_scene utils show_stats

        You fold the cream sauce through the rice and take your time with it. They've changed to wooden spoons, flatter and blunter than the plastic ones. The worst part is the soggy paperboard bowl.

        You ponder the new rules. Turn them over, let them settle.

    #Notice what the new rules are doing.
        *gosub_scene utils increase_analysis
        *gosub_scene utils show_stats

        You see that the new rules all point the same way: containment. If one match gets raided, the rest are unaffected.

        It's the obvious move. Probably what you'd do in their position.

    #Replay how the part-timer delivered the message.
        *gosub_scene utils increase_empathy
        *gosub_scene utils show_stats

        He was reading it off his phone. You doubt he even knows what he's saying. From his perspective, it's some kind of alternate-reality game.

        No more shared contacts now. Just a name, a fight, then nothing.

You see out the rest of the workday and make your way to MK Fight. It's open, like nothing happened. No one says anything about yesterday.

Will there be a fight this month? No word yet. But whatever happens with the fights, you still need to train. You wrap your hands, already hearing the heavy bag take the first hook.

*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, 13 September 2024
*gosub_scene utils update_highest_friendship

The office is at war. Half an hour before lunch, voices rise in the pantry. Three colleagues are saying that the office should definitely replace the 5-gallon carboys of distilled water with mineral water. The mineral water is better for the body, providing important electrolytes and preventing heatiness. But two of the others reject this bold plan; they like the purity of the distilled water.

Battle lines are drawn. Most people in the office have had their say, names scrawled on a sheet pinned to the noticeboard. As one of the few remaining undecideds, you're asked for your opinion.

*choice
    #Support the mineral water faction.
        *set office_water "mineral"
        *set epithet "mineral water supporter"
        The mineral water faction has strong arguments. Bodies need electrolytes. And who wants heatiness? You explain this to the pantry. The three mineralists nod, and the two distillists don't bother arguing. They add your name to the column.

    #Support the distilled water faction.
        *set office_water "distilled"
        *set epithet "distilled water supporter"
        The distilled water faction has the stronger case. Why change what's working? Knowing that it's pure distilled water means you know what you're putting in your body. You explain this to the pantry. The two distillists exchange looks, while the three mineralists don't say anything. They add your name to the column.

    #Decline to express a preference.
        *set epithet "office water abstainer"
        Mineral water? Distilled water? You don't care. Everyone freezes. They can't understand how you could be so blasé about this important choice. Why throw away your vote, their silence says.

The water-dispenser business now dealt with, you head down for lunch. Your usual place is gone. In its place is a long stainless steel counter, the signboard above for another two-dish-rice shop, a scrim of cloth over the front, the name bleeding through. You go for Pret a Manger instead.

*page_break
Saturday, 14 September 2024

You wake up to two texts from your promoter. The first, at 7:30am, reads, "Warm reminder: We strongly disapprove of illegal underground fighting and do not condone it."

The next, a few minutes later, reads, "You are invited to participate in a stage drama that involves physical contact. This is a performance that includes some fighting. Your performing partner: Camille 'The Mime' Durand. Tung Chung, Hau Wong Temple bamboo theatre. 29 September, 8pm."

*page_break
Camille Durand, "The Mime". You search for information online; there are several results for a Camille Durand whose ambitious French restaurant folded within a year.

The forums turn up a single thread about a fighting mime — face painted white, mouth drawn black — who ascends invisible stairs, pretends to be trapped in a box, leans against an invisible wall. The thread is vague about how any of that works in the ring.

A dead end. You wonder if you could call a friend to find out more.

*choice
    *if (eric_subplot_status = "available") #Call Eric.
        *gosub_scene utils show_stats

        *if (eric_friendship >= 3)
            "Heard of something like that. Some sort of mime who creates energy projections, like mine. But different method, apparently. Haven't fought them myself."

            Invisible walls, invisible stairs, energy projections. Maybe there's a method there.
        *else
            "I've heard of a fighting mime, but I haven't fought them myself. Don't know too much about them."

            So it [i]is[/i] a fighting mime. Anything beyond that, you'll figure out later.

    *if (katie_subplot_status = "available") #Call Katie.
        *gosub_scene utils show_stats

        *if (katie_friendship >= 4)
            "Hey, ${first_name}, sorry, I'm not too plugged in to the scene. I just show up when they text me. I don't know anything about this Camille."

            Katie only shows up for fights. Figures that she's got nothing.

        *else
            "Sorry, I'm not too plugged in to the scene. I don't know anything about this Camille."

            Katie only shows up for fights. Figures that she's got nothing.

    *if ((danny_subplot_status = "available") and (danny_subplot_scene > 2)) #Call Danny.
        *gosub_scene utils show_stats

        You call Danny, but no one picks up. Back to the gym.

    *if (chloe_subplot_status = "available") #Call Chloe.
        *gosub_scene utils show_stats

        *if (chloe_friendship >= 1)
            "They ran this upscale French restaurant, right? Total shitshow. Their signature dish was a chicken on a silver plate, and they made a whole ridiculous dog-and-pony show about it."

            She laughs. "They're fighting now? Can't wait to see what that looks like."

            A show built on a silver-plattered chicken. You wish you'd seen it.

        *else
            "I think they ran this upscale French restaurant. It didn't do very well. They're fighting now, huh? Can't wait to see what that looks like."

            Not that much to go on. You can't quite picture a failed restaurateur throwing hands in the ring.

    #Get back to training.
        *gosub_scene utils show_stats

        Whatever Camille does, you'll need to be ready.

*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
Saturday, 28 September 2024
*gosub_scene utils show_stats

*if (boxing_insights_unspent > 0)
    *gosub_scene upgrades spend_insight_choices

You've assembled more information about Camille. The first hit: a business case study about the restaurant. Most of it catalogued the financial and management failures, but it noted that after the restaurant shuttered, Camille disappeared for a year before reinventing themselves as a mime. Then you find an old review, not yet scrubbed, from someone at one of Camille's shows. She describes them walking up invisible stairs onto a raised platform, and then down the other side.

Illusion? Wires? Something else?

You read further: the chicken. A lifelike chicken flapped its wings, and the reviewer felt a breeze on her face. Tears fell, streaking Camille's face paint, shimmering as they splashed onto the wood floor. It was realistic enough, she wrote, that she went looking for the projector and the fan.

All of this information's vivid. None of it's useful.
*if highest_trait = "analysis"
    The invisible stairs can be explained. The chicken, you're not so sure about.
*elseif highest_trait = "composure"
    You don't see any way to confirm the rumours. So you prepare for what you can.
*elseif highest_trait = "empathy"

    They disappeared for a year, and came back like this. You wonder what happened during that gap.
*else
    *bug Invalid highest_trait

Coach Lam doesn't have much to add. "When in doubt, jab."

Helpful.

After the experience at The Cauldron, you've been scouting venues in advance. It's an ordinary bamboo opera stage, erected for the Hau Wong festival and not yet dismantled. The platform is around a metre off the ground and there's a large seating area. Not the most low-profile arena.

*page_break
Sunday, 29 September 2024

You finish your early dinner and ride the train to Tung Chung, then take the 38. You step off and head towards the theatre, passing a line of roadside banners: "Happy Hong Kong", "Day x Night Vibes @ 18 Districts", "A New Era – Stability . Prosperity . Opportunity".

7:30pm, half an hour before your event. Coming into view ahead are seven floral tribute boards with auspicious couplets, left over from last week's festival, each one taller and wider than a village house. They're dark now, although you can still make out the names of deities, the Marquis Prince larger than the rest. Behind the tribute boards, the theatre rises, two storeys of bamboo scaffolding, roofed over in zinc.

You step inside. Strings of bulbs hang between the bamboo poles, only the far end lit. There, raised a metre off the ground, is a long and deep stage, bare wood planks for the floor. A few dozen people gather below it, most on their phones, faces lit blue by the screens.

*if highest_trait = "analysis"
    Raised stage, open space. Temporary, but it's usable.
*elseif highest_trait = "composure"
    The surroundings are unusual, but the stage is simple. Nothing here is complicated.
*elseif highest_trait = "empathy"
    The spectators are mostly absorbed in their phones. Casual. Curious enough, but not too curious.
*else
    *bug Invalid trait

You present yourself backstage. A flutter of adrenaline, just a brief tightening in the chest. After all these months, that's it.

*page_break Camille "The Mime" Durand.
*gosub camille_fight
*gosub_scene utils first_loss_notification
*finish End of Chapter 6.



*label camille_fight
*temp dc_easy 20
*temp dc_medium 26
*temp dc_hard 32
*set fight_momentum 5
*set trait_bonus_amount 2
*set upgrade_multiplier 5
*gosub_scene utils calc_adj_stats
Backstage is low and tight, a partition with hanging cloth draped over a bamboo frame, roofed in zinc sheeting. You finish wrapping your hands, bite down on your mouthguard and pull your gloves on, just as a stagehand parts the curtain and says it's time.

You take the wooden steps onto the main stage, a few paces in front of the backdrop. In the middle of the stage, there's a white rectangle marked with paint, six metres square. There's a generous margin from the paint to the edge of the stage; you won't fall to the grass below.

Some of the spectators notice you and go quiet, facing the stage. The bookmaker's also here, but his tablet is nowhere to be seen. Instead, he huddles with small groups, accepting hundred-dollar bills and scrawling in a notebook.

Emerging from the other side of the stage is someone with white face paint and black-painted lips. Thin, fairly tall, with a black beret askew, a crimson neck scarf, and a loose, boxy striped top. Black suspenders over wide trousers and black lace-up shoes. They lift their knees high with each step, but each footfall lands without a sound.

Seeing you, Camille touches two fingers to the brim of their beret and inclines their head. You nod back.
*if highest_trait = "analysis"
    They look like a standard-issue mime. True to form, they haven't said a word.
*elseif highest_trait = "composure"
    They're committed to the bit, costume and movements all of a piece.
*elseif highest_trait = "empathy"   
    You don't have a read on them yet. Could be genuine, or just an act.
*else
    *bug Invalid highest_trait

*page_break
The announcer, a stocky man in a top hat, is at the centre of the stage. "Welcome, everyone. Tonight's event will be a stage drama, three rounds of three minutes each."

Light applause from the crowd. He continues, "Performers, please come in."

He steps back and spreads his arms, one hand to you, one to Camille. You go towards him.

But when you reach the announcer, Camille is still where they started, high-stepping on the spot. "Ahem... Camille, you too," says the announcer.

Camille clasps their hands in front of their chest and bows their head, and then walks over normally. A few laughs. The announcer sends you to your corners. "Performers, begin!"

The bell rings. Camille meets you near the centre. They throw both hands up, like they're being held at gunpoint, mouth frozen open in a wide circle.

*gosub_scene utils show_fight_momentum

*choice
    #Probe Camille's defences with a ${jab}.@{fight_vision  [i](Technique, Mental)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_technique * 0.6) + (adj_mental * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= ((dc_easy * 0.5) + (dc_medium * 0.5))
            Their left hand drifts down to intercept your jab, quicker than its lazy arc indicates, but you still manage to tag their forearm, your glove landing with a thud. Camille maintains their expression of open-mouthed shock and returns a snap jab that stops just shy of your guard. Then they spring back, out of range, and press a hand to their chest in a small bow.
            
        *else
            Their left hand drifts down to intercept your jab, quicker than its lazy arc indicates, cleanly absorbing the force of your punch. Camille maintains their expression of open-mouthed shock and responds with a theatrically slow jab that grazes your guard. Then they spring back, out of range, and clutch their belly, doubling over in silent laughter.

    #Maintain range just outside jab distance and observe.
        You slide and circle just outside their reach, inviting them to make the first move. Instead, Camille mirrors you, bobbing and weaving, head swaying. Then they cup their chin in both palms, eyes widening as their mouth purses into a small "O" shape.

    #Seize the initiative with a ${flurry}.@{fight_vision  [i](Power, Toughness)[/i]|}
        *gosub_scene utils calculate_trait_bonus "composure"
        *set upgrade_bonus (upgrade_multiplier * flurry_level)
        *if (((adj_power * 0.6) + (adj_toughness * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *set fight_momentum +1
            You lunge forward and tag Camille with a quick burst, the punches landing hard enough to rattle them. It takes a moment before they reset, sidestepping with hands snapping up to cover.

            They mime a slow clap.

        *else
            *set fight_momentum -1
            You lunge forward, attempting to tag Camille with a quick burst, but they swat away your punches. Then they riposte with a flurry, quicker than you expected. The punches don't land clean, but one gets through, grazing your cheek.

            They don't press the advantage. Instead, they mime another flurry, punching at empty air. Then they throw their head back in silent laughter.

You reset, but just as you're thinking of your next move, Camille turns and lifts one knee, then the other, starting to climb. Each step lifts them higher and further away — literally, their footsteps landing on empty air. You don't see any wires or a frame.

Camille is already two metres up, halfway across the ring. They tuck their chin, and then they barrel downhill at you, shoulder first!

*gosub_scene utils show_fight_momentum

*choice
    #Absorb the charge with your ${block}.
        You brace hard, back foot planted, both arms raised high. You take the momentum head-on. It hits you like a bowling ball and sends both of you reeling back.

        You both straighten up at the same time. Nothing damaged from the impact. Camille's squared up, too.

    *selectable_if (dodge_level > 0) #Slip their charge with your ${dodge}.@{fight_vision  [i](Technique, Mental)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * dodge_level)
        *if (((adj_technique * 0.6) + (adj_mental * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *set fight_momentum +1
            You lower your body, legs coiled. At the very last moment, you twist sideways, barely out of reach. Camille rushes past and skids to a halt before wheeling around. You only have time to tag them with a single jab, although it lands clean.

            They take the hit, shrugging it off, and then they skip backwards on the balls of their feet.

        *else
            *set fight_momentum -1
            You lower your body, legs coiled. At the very last moment, you twist sideways, but you're not fast enough. Camille clips your chest with their shoulder, knocking the wind out of you.

            After they've squared up, they point a finger at you, shoulder shaking with silent laughter.

*page_break
The bell rings, ending the first round. The announcer waves both of you back to your corners. You catch your breath.
*if fight_momentum < 5
    Three minutes in, and you're fully warmed up, slightly out of breath.
*else
    Three minutes in, and you're warmed up, not even breathing hard.

Looking over at Camille, you see that they're
*if fight_momentum > 5
    not as springy as before, although their breath stays even.
*elseif fight_momentum = 5
    also catching their breath, no worse off than you.
*else
    untouched. They lock eyes with you, and their painted mouth stretches into a wide grin.

A swish of water, and then the bell rings for round two. You meet Camille back at the centre. They raise both palms flat and press them against the air, shaping a wide wall. A frown creases their white face paint.

*gosub_scene utils show_fight_momentum

*choice
    #Test the invisible wall with a ${jab}.@{fight_vision  [i](Power, Technique)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_power * 0.5) + (adj_technique * 0.5)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *set fight_momentum +1
            You rap the wall with a snap jab. It's solid, but yields, like a heavy bag on its chain. You find a rhythm, peppering the wall with jabs, while keeping your chin down.

            Camille lets the wall take your punches, hands straining against the air. Their arms tremble with the effort, so you keep knocking on the wall with more jabs, the occasional cross. They're pinned behind their own wall. You're driving them back, step by step.
        *else
            *set fight_momentum -1
            You rap the wall with a snap jab. It's solid, unyielding, like punching a sandbag. You find a rhythm, peppering the wall with jabs, while keeping your chin down.

            Camille lets the wall take your punches, hands pressing against the air. As you go for another jab, they shove the invisible wall forwards. It catches you mid-punch, arm half-extended, and your wrist bends as the wall drives your fist back.
            
    #Ignore the wall and go for a ${combo} on Camille.
        *set fight_momentum -1
        You ignore the wall and punch through it — jab, cross, uppercut. Or you try to. Halfway to Camille, your fist is stopped cold by the wall, your arm half-extended, your wrist bending against the resistance.

        They don't follow up. Instead, they polish the wall with the heel of one hand. You think it gleams, invisibly, in the light.

    #Hold steady and read their movements.
        You stay where you are, not chancing the wall. They walk the wall forward, hands flat, feet shuffling towards you, but you backstep, keeping your distance. After another try, Camille sweeps the entire wall aside. They lower their hands, and their face droops.

        You raise your arms, feint a lunge. They hop back, arms flung out wide.

Camille then dashes around the stage, knees pumping high even in their sprint, opening up the distance between you. They stop and reach down, heaving up a coil of invisible rope. Then they face you and haul on the rope, hand over hand. You're yanked forward by the waist, your front foot skidding.

*gosub_scene utils show_fight_momentum

*choice
    #Resist the pull with your ${block}.@{fight_vision  [i](Toughness, Power)[/i]|}
        *gosub_scene utils calculate_trait_bonus "composure"
        *set upgrade_bonus (upgrade_multiplier * block_level)
        *if (((adj_toughness * 0.6) + (adj_power * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= ((dc_easy * 0.5) + (dc_medium * 0.5))
            You drop your weight onto your back foot, knees bent. You lean back, keeping your guard up.

            Camille hauls on the rope, their white face creasing, mouth frozen in a grimace. You manage to stay put. After a few more heaves, they finally let go of the rope and mop their brow with their sleeve.

        *else
            *set fight_momentum -1
            You drop your weight onto your back foot, knees bent. You lean back, keeping your guard up.

            Camille hauls on the rope, their white face creasing, mouth frozen in a grimace, and manages to wrench you forward. You stumble, almost going down, windmilling your arms to stay upright. They reel you in, but stop just a few paces away. Then they let go of the rope and mop their brow with their sleeve, grinning wide.

    #Go with it and advance into a ${flurry}.@{fight_vision  [i](Power, Technique)[/i]|}
        *gosub_scene utils calculate_trait_bonus "composure"
        *set upgrade_bonus (upgrade_multiplier * flurry_level)
        *if (((adj_power * 0.5) + (adj_technique * 0.5)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *set fight_momentum +1
            Instead of fighting the pull, you go with it and charge forward. The rope should go slack. Worth a try.

            Camille pulls on the rope, their eyebrows shooting up as they pull on nothing. You dash into a ${flurry}, finding them open, though you're a bit off-balance. They fall back, shaking their head clear.

        *else
            *set fight_momentum -1
            Instead of fighting the pull, you go with it and charge forward. The rope should go slack. Worth a try.

            You don't manage to advance fast enough; Camille tightens the rope before you gather momentum, and you pitch forward. You hit the wooden boards, arms first, and scrabble up fast. They give the rope another tug, but then release it and mop their brow with their sleeve, grinning wide.

    *selectable_if (counter_level > 0) #Grab the rope and yank back to counter the pull.@{fight_vision  [i](Power, Toughness)[/i]|}
        *gosub_scene utils calculate_trait_bonus "empathy"
        *set upgrade_bonus (upgrade_multiplier * counter_level)
        *if (((adj_power * 0.7) + (adj_toughness * 0.3)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *set fight_momentum +2
            Why should Camille have the rope all to themselves? You grab it too. It feels thick, substantial, yet soft enough that you can get a good grip through your boxing gloves.

            You yank on it, once, hard. Camille stumbles forward and falls flat on their face. They spring up off their hands, their white face slack, mouth dropping into an "O".

            Then their mouth stretches into a grin and they clap fast, still soundless. You raise a gloved hand in response.

        *else
            *set fight_momentum -1
            Why should Camille have the rope all to themselves? You grab it too. But you can't feel anything substantial, your gloves folding around a thin cord, like a nylon fishing line.

            You try to pull on it, but it slips through your boxing gloves. Camille hauls on the rope, their white face creasing, mouth frozen in a grimace, and manages to wrench you forward. You stumble, almost going down, windmilling your arms to stay upright. They reel you in, but stop just a few paces away. Then they let go of the rope and mop their brow with their sleeve, grinning wide.

As you square up again, their smile slips. Camille takes a deep breath, and the smile returns. Then they draw their shoulders together, like it's cold. They turn sideways to you and lean away, one hand on their beret, struggling against a wind.

Before you realise it, you've taken a step back as a gust of wind hits you. It picks up, hard gusts and cold breezes, swelling and ebbing.

*gosub_scene utils show_fight_momentum

*choice
    #Brace against the gusts.
        You copy them, turning sideways to the wind, gloves up. It hits you steadily, your shoulder taking most of it, and you set your back foot.

        Camille turns their head to look at you. Seeing you dig in, their grin returns, and they bob their head before turning back to face the wind.

    *selectable_if (dodge_level > 0) #Slip the gusts with your ${dodge}.@{fight_vision  [i](Technique, Mental)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * dodge_level)
        *if (((adj_technique * 0.6) + (adj_mental * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= ((dc_medium * 0.8) + (dc_hard * 0.2))
            After a few gusts, you grasp the rhythm; they take a second to gather momentum. You start to slip them, sidestepping the instant a push begins. You advance through the gaps onto the stationary Camille.

            As you close in, they look back and scramble back, eyes wide. They manage to put distance between you, but are caught by a sudden gust, stumbling, a breath knocked out of them.

        *else
            After a few gusts, you grasp the rhythm; they take a second to gather momentum. You try to slip them, sidestepping the instant a push begins. But the window's too tight. You can't close the gap, and you stumble, off-balance.

            Camille turns their head to look at you. Their shoulders shake once with a silent laugh, and then they turn back to face the wind.

    #Advance against the wind.@{fight_vision  [i](Toughness, Mental)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *if (((adj_toughness * 0.6) + (adj_mental * 0.4)) + trait_bonus_applied) >= dc_medium
            After a few gusts, you read the wind — large gusts, then a lull. You push forward during the lulls, forcing Camille to scramble back, their eyes wide. They manage to put some distance between you, out of reach before you can throw anything.

        *else
            After a few gusts, you read the wind — large gusts, then a lull. You push forward during the lulls, but the rhythm breaks. You're slammed by a sudden hard gust as you step forward, and nearly go down.

            Camille turns their head to look at you. Their shoulders shake once with a silent laugh, and then they turn back to face the wind.


Finally, the wind dies, and the bell rings to end the second round.

*page_break
*if fight_momentum > 5
    You're breathing hard, but you're unhurt. Camille is labouring for breath, their face paint streaked with sweat, their mouth in a downturned trapezoid.
*elseif fight_momentum = 5
    You're breathing heavily, carrying just a few scratches, nothing serious. Camille is breathing as hard as you are, their face paint streaked with sweat, their smile slow to return.
*else
    You're winded, shoulders aching. Camille is breathing easy, hands hanging by their sides, though their smile wavers.

As the rest nears its end, the crowd begins a chant. It's just a few people at first, but then it picks up.

"Le Coq! Le Coq! Le Coq Magnifique!"

*if highest_trait = "analysis"
    Surprisingly crisp French. They seem to be calling for Camille's signature move.
*elseif highest_trait = "composure"
    They aren't frenzied. More of a steady expectation.
*elseif highest_trait = "empathy"   
    The crowd isn't on Camille's side, exactly. More like they want a spectacle.
*else
    *bug Invalid highest_trait

But before the chant can build, the announcer taps his microphone and says, "Settle down, settle down."

The chant dies as the final round begins.

*page_break
You're on Camille the moment the bell rings, pressuring them with back-to-back combinations before they can set anything up. They slap away some of your strikes and slip, sidestep, shoulder-roll the rest. You throw more than a dozen shots, but only one lands, barely grazing their shoulder.

You catch your breath after another combo that only meets air. They sprint to the far edge of the stage, no high-stepping this time. You pursue. They fling their beret to the floor and pull a pleated chef's hat from their wide trousers. As they set it on their head, a blinding flash.

Your vision clears. Camille has their hands thrown wide above their head, fingers splayed. Between you, an enormous chicken. It looks almost five feet tall, with a body of fluffed white feathers, a scarlet comb, and a blunt, golden beak.

It flaps its wings, lifting into the air. Stray feathers shake loose and fade when they hit the floorboards. The wind from its wings blows you back a step. It lands, then squawks at you, loud, like a chicken.

You test the chicken with a jab. Your punch connects, and the chicken jerks its head back and pecks at your glove. Behind it, Camille adjusts their hat, their lips pressed together.

*temp chicken_actions_taken 0
*temp hit_camille_during_chicken_fight false
*temp confirmed_chicken_link false
*label le_coq_magnifique
*gosub_scene utils show_fight_momentum

*choice
    *hide_reuse #Stand your ground with your ${block}.@{fight_vision  [i](Toughness, Mental)[/i]|}
        *if fight_momentum > 5
            You have the lead and have nothing to prove.
        *else
            You take a moment to catch your breath.
        *gosub_scene utils calculate_trait_bonus "composure"
        *set upgrade_bonus (upgrade_multiplier * block_level)
        *if (((adj_toughness * 0.7) + (adj_mental * 0.3)) + (trait_bonus_applied + upgrade_bonus)) >= dc_easy
            Keeping out of the chicken's reach, you read the space. The chicken stares at you, head tilted to one side, beak opening and closing. Behind it, Camille has their arms out to the sides and sways left and right.

            The chicken leans forward and pecks, a single test-peck that catches your glove. Its beak is large but blunt, landing like a thrown cushion. You hold. It pecks again, then again, but always straight on. Your gloves meet each one.

            You see a pattern too: just before each peck, Camille bobs their head forward.
        *else
            Keeping out of the chicken's reach, you read the space. The chicken stares at you, head tilted to one side, beak opening and closing. Behind it, Camille has their arms out to the sides and sways left and right.

            The chicken leans forward and pecks, a single test-peck that catches your glove. Its beak is large but blunt, landing with the force of a hammer. It pecks again, then again, always in a straight line, but your arms start to tire. One peck gets between your arms and catches you in the chest, knocking you back.

            However, you see a pattern: just before each peck, Camille bobs their head forward.
            *set fight_momentum -1
        *set chicken_actions_taken +1
        *set confirmed_chicken_link true
    *hide_reuse *selectable_if (dodge_level > 0) #Hang back and slip the chicken with ${dodge}.@{fight_vision  [i](Technique, Mental)[/i]|}
        *gosub_scene utils calculate_trait_bonus "empathy"
        *set upgrade_bonus (upgrade_multiplier * dodge_level)
        *temp dodge_difficulty ((dc_easy * 0.5) + (dc_medium * 0.5))
        *if confirmed_chicken_link
            *set dodge_difficulty dc_easy
        *if fight_momentum > 5
            You're in the lead and have nothing to prove.
        *else
            You take a moment to catch your breath.
        *if (((adj_technique * 0.6) + (adj_mental * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= dodge_difficulty
            *if confirmed_chicken_link
                You realise by now: Camille moves, and then the chicken moves. So you lock onto Camille, not the bird.
            *else
                How hard can it be to dodge a giant chicken?
            You hang back, your footwork loose. The chicken pecks at you, but you're ready and slip it clean.
            *if not(confirmed_chicken_link)
                And there it is. Before each peck, Camille's head bobs forward.

            Another peck, straight and centre. You step back, the chicken's head overextended in front of you. But it pulls back before you can counter.

            Too easy. You drop your hands and jut your jaw forward. The chicken stamps its feet and crows, its comb shaking.
        *else
            *if confirmed_chicken_link
                You realise by now: Camille moves, and then the chicken moves. So you lock onto Camille, not the bird.
            *else
                How hard can it be to dodge a giant chicken?
            You hang back, your footwork loose. The chicken pecks at you, but you're ready and manage to slip it.
            *if not(confirmed_chicken_link)
                And there it is. Before each peck, Camille's head bobs forward.
            
            Another peck, straight and centre. You step back, but misjudge the distance — its beak clips you on the chest, heavy as a hammer.

            The chicken struts and crows, but doesn't press.
            *set fight_momentum -1
        *set confirmed_chicken_link true
        *set chicken_actions_taken +1
    *hide_reuse *selectable_if (counter_level > 0) #Catch the chicken with your ${counter}.@{fight_vision  [i](Mental, Technique)[/i]|}
        *gosub_scene utils calculate_trait_bonus "empathy"
        *set upgrade_bonus (upgrade_multiplier * counter_level)
        *temp counter_difficulty ((dc_medium * 0.8) + (dc_hard * 0.2))
        *if confirmed_chicken_link
            *set counter_difficulty dc_medium
        *if (((adj_mental * 0.6) + (adj_technique * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= counter_difficulty
            *if confirmed_chicken_link
                You realise by now: Camille moves, and then the chicken moves. So you lock onto Camille, not the bird.
            *else
                Just wait for the peck and turn it back. Easy.
            You sink your weight, knees bent, gloves up. The chicken pecks at you, straight and centre. You barely slip the peck, your hips turning as your glove snaps out. Your counter catches it right in the chest.

            The bird stumbles back, claws scrabbling on the floorboards, feathers flying everywhere. It lets out a ragged squawk, covering itself with its wings.
            *if not(confirmed_chicken_link)
                And you see it. Before each peck, Camille's head bobs forward.
            *set confirmed_chicken_link true
            *set fight_momentum +1
        *else
            *if confirmed_chicken_link
                You realise by now: Camille moves, and then the chicken moves. So you lock onto Camille, not the bird.
            *else
                Just wait for the peck and turn it back. Easy.
            You sink your weight, knees bent, gloves up. The chicken pecks at you, straight and centre. You try to slip the peck but misjudge the distance. Its beak slams into your shoulder.

            You stagger. It feints with its beak, and you flinch. Then the chicken struts and crows, a full cock-a-doodle-doo. It looks you dead in the eye.
            *set fight_momentum -1
        *set chicken_actions_taken +1
    *hide_reuse #Systematically wear down the chicken with your ${combo}.@{fight_vision  [i](Power, Toughness)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * combo_level)
        *if (((adj_power * 0.5) + (adj_toughness * 0.5)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            Camille stands there, motionless now. But you can't reach them through the chicken.

            So you set your stance and get to work. All the combinations you've drilled for months, one-two-three, one-two-five-two. Your punches thud onto feathered meat. The bird raises its wings, squawks, but it can't find room to peck back. It can only cower, its comb tucked behind its wings, feathers shaking loose.

            Camille remains behind. They flinch every time a glove lands on the chicken.
            *set confirmed_chicken_link true
            *set fight_momentum +1
        *else
            Camille stands there, motionless now. But you can't reach them through the chicken.

            So you set your stance and get to work. All the combinations you've drilled for months, one-two-three, one-two-five-two. But a wing bats the jab aside, it bobs its head under the hook, then leans away from the uppercut. Nothing gets through.

            You're in the middle of a one-two when the chicken slips your cross and pecks you in the ribs. It drives the wind out of you, and now it's the one throwing combinations. Peck peck. Peck peck peck.

            You give ground.
            *set fight_momentum -1
        *set chicken_actions_taken +1        
    *hide_reuse #Find Camille with your ${jab}.@{fight_vision  [i](Mental, Technique)[/i]|}
        *gosub_scene utils calculate_trait_bonus "analysis"
        *set upgrade_bonus (upgrade_multiplier * jab_level)
        *if (((adj_mental * 0.6) + (adj_technique * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= dc_medium
            *if confirmed_chicken_link
                Camille moves, and then the chicken moves. So Camille is the target, not the bird.
            *else
                Camille stands there, motionless. Surely there's something to be gained by disrupting them?
            But the chicken's in the way. It's large, and it keeps putting itself between you and Camille.

            You throw a one-two at the air, then beckon it with an open glove. Its hackles flare and its crimson wattle quivers, and it flaps its wings. It charges, head cocking back to peck you.

            As it lunges, you slip to the left. Before it can recover, you cover the distance to Camille with two long strides. There's a panicked squawk behind you and a gust at your back as the chicken scrambles to interpose itself.

            You land a jab on Camille, catching them on the cheek. Their head snaps back and their hands fly to their face.

            The chicken arrives at last, wings flailing, claws stumbling.
            *set hit_camille_during_chicken_fight true
            *set fight_momentum +1
        *else
            *if confirmed_chicken_link
                Camille moves, and then the chicken moves. So Camille is the target, not the bird.
            *else
                Camille stands there, motionless. Surely there's something to be gained by disrupting them?
            But the chicken's in the way. It's large, and it keeps putting itself between you and Camille.

            You throw a one-two at the air, then beckon it with an open glove. Its hackles flare and its crimson wattle quivers, and it flaps its wings. It charges, head cocking back to peck you.

            As it lunges, you slip to the left. You approach Camille with long strides, but the chicken is already moving. It crashes into you, wings beating in your face. Feathers fly.

            You stumble, gloves up against a white blizzard, only the sound of dry thunderclaps.
            *set fight_momentum -1
        *set chicken_actions_taken +1
    *hide_reuse #Land your ${flurry} on Camille.@{fight_vision  [i](Power, Technique)[/i]|}
        *gosub_scene utils calculate_trait_bonus "composure"
        *set upgrade_bonus (upgrade_multiplier * flurry_level)
        *temp flurry_difficulty ((dc_medium * 0.6) + (dc_hard * 0.4))
        *if confirmed_chicken_link
            *set flurry_difficulty dc_medium
        *if (((adj_power * 0.6) + (adj_technique * 0.4)) + (trait_bonus_applied + upgrade_bonus)) >= flurry_difficulty
            *if confirmed_chicken_link
                Camille moves, and then the chicken moves. So Camille is the target, not the bird.
            *else
                Camille stands there, motionless, wide open.
            But the chicken's in the way. You have to get past it.

            You shift your weight to your back foot and extend your lead hand. The bird puffs up its breast and advances. You feint a jab. As it flinches, you sprint past the chicken.

            A panicked squawk behind you. No matter. You're already on Camille, unloading everything. They stagger, hands going up too late, and drop to one knee.

            Finally, the chicken interposes itself, wings thrown around Camille, its back to you. You crouch and punch its tail, but there's no power behind it. You step off.
            *set hit_camille_during_chicken_fight true
            *set fight_momentum +2
        *else
            *if confirmed_chicken_link
                Camille moves, and then the chicken moves. So Camille is the target, not the bird.
            *else
                Camille stands there, motionless, wide open.
            But the chicken's in the way. You have to get past it.

            You shift your weight to your back foot and extend your lead hand. The bird puffs up its breast and advances. You feint a jab and sprint past the chicken.

            But the chicken doesn't bite. Instead, it sticks out a claw as you pass. You trip on its outstretched limb, tumbling to the ground. The chicken pecks at the ground near you, making you scramble.

            You roll to the side and push yourself back up. The bird has already interposed itself between you and Camille. It clucks at you.
            *set fight_momentum -1
        *set chicken_actions_taken +1

*if (chicken_actions_taken = 1)
    You take a breath. The chicken takes one too, its chest rising and falling.

    Camille and the chicken. The chicken and Camille.
    *if hit_camille_during_chicken_fight
        When you landed a hit on Camille, the chicken went wild.

        You square up.
    *else

        You square up.

    *goto le_coq_magnifique
*elseif (chicken_actions_taken = 2)
    *if confirmed_chicken_link
        You square up, eyes on Camille —
    *else
        You square up, eyes on the chicken —

    But the bell rings. That's it.

    You straighten, take a breath, one eye on the chicken. It stands stock-still, wings down. Camille's head is bowed, staring at the floorboards. They raise a palm to the chicken.

    A large silver plate forms under it and lifts the chicken into the air. It bows to you, comb flopping down, then to Camille. You return the bow.

    The chicken fades, along with the plate. The smell of thyme, rosemary.

*else
    *bug Invalid chicken_actions_taken
*page_break
There you stand in front of the crowd: you, the announcer, Camille.

"Thank you to both performers for creating such a magnificent stage drama! And the winner of the stage drama is..."

*if (fight_momentum > 5)
    *set record_wins +1
    *set camille_result "win"
    "${last_name}!" He raises your gloved hand. Scattered applause.

    *if hit_camille_during_chicken_fight
        Camille sweeps their chef's hat back into their trouser pocket and bows to you, bending from the waist.
    *else
        Camille's gaze lingers where the chicken was. Then they sweep their chef's hat back into their trouser pocket and bow to you, bending from the waist.
*else
    *set record_losses +1
    *set camille_result "loss"
    "Camille!" He raises their hand. Scattered applause.

    Camille sweeps their chef's hat back into their trouser pocket and bows to the crowd. Then they bow to you, bending from the waist.

Your breath has steadied. Camille's still sweating, their scarf wet and clinging. Their shoulders slump. The face paint has streaked down from their eyes.

They straighten and point at themselves, then at you. They cup an invisible bowl in one hand under their chin. The other hand is pinched around chopsticks, raking from the bowl to their mouth.

*temp accept_camille_invitation false
*fake_choice
    #An interesting fight. I want to know more.
        *set accept_camille_invitation true
        Mime made real. A giant chicken. You want to know their story.

    #An interesting fight. But I know enough for now.
        *set accept_camille_invitation false
        Mime made real. A giant chicken. Fascinating, but their story can stay theirs.

Before you can answer, the announcer says, "Thank you, performers. Please collect your prizes and leave the way you came."

The announcer hands each of you a book. Yours is an olive-green hardcover with no jacket. You flip it open — [i]The Intelligent Investor[/i] — then close it. Camille's is a paperback, [i]Storey's Guide to Raising Chickens[/i].

Camille pauses. They raise both palms, elbows bent, and their shoulders sag. They lift two fingers to their forehead and go down the far steps, knees no longer high.

The crowd's thinning. Camille's beret is still where they flung it away, past the paint, near the edge of the stage.

*if accept_camille_invitation
    You walk over and pick it up.
*else
    You leave it there.

*return