<<set $theme to "light">>
<<set $playerName to "">>
<<set $confidence to 10>>
<<set $max_confidence to 10>>
<<set $inventory to []>>
<<set $vocab_list to []>>
<<set $score to 0>>
<<set $mistakes to 0>>
<<set $day to 1>>
<<set $hour to 9>>
<<set $last_roll to 0>>
<<set $roll_needed to "">>
<<set $review_init to false>>
<<set $city to "London">>
<<set $gameVersion to 1>><<if $theme == "dark">>
<<run $('body').addClass('theme-dark').removeClass('theme-light')>>
<<else>>
<<run $('body').addClass('theme-light').removeClass('theme-dark')>>
<</if>>
<<set $confidence to Math.clamp($confidence, 0, $max_confidence)>><<nobr>>
<div class="sidebar-panel">
<div class="tracker-card">
<div class="card-header">🕘 Hour</div>
<div class="day-row">
<<set _hours to ["9","10","11","12","14","15","17"]>>
<<for _i to 0; _i lt _hours.length; _i++>>
<<set _h to _hours[_i]>>
<<if _h lt ($hour is 13 ? 14 : $hour)>><div class="day-dot day-past"><<print _h>></div><</if>>
<<if _h eq ($hour is 13 ? 14 : $hour)>><div class="day-dot day-current"><<print _h>></div><</if>>
<<if _h gt ($hour is 13 ? 14 : $hour)>><div class="day-dot day-future"><<print _h>></div><</if>>
<</for>>
</div>
</div>
<div class="tracker-card">
<div class="card-header">
<span>
<<if $confidence <= 3>>⚠️ Confidence
<<elseif $confidence <= 6>>😬 Confidence
<<else>>😊 Confidence
<</if>>
</span>
<span class="conf-score"><<print $confidence>>/<<print $max_confidence>></span>
</div>
<div class="conf-bar-bg">
<<set _confClass to "conf-bar-fill " + ($confidence <= 3 ? "conf-low" : ($confidence <= 6 ? "conf-med" : "conf-high"))>>
<<set _confWidth to Math.round(($confidence / Math.max($max_confidence, 1)) * 100) + "%">>
<div @class="_confClass" @style="'width:' + _confWidth + ';'"></div>
</div>
<div class="conf-text">
<<if $confidence <= 3>>Stay calm — one email at a time.
<<elseif $confidence <= 6>>You're doing OK — keep your tone steady.
<<else>>Strong confidence — you've earned it today.
<</if>>
</div>
</div>
<div class="tracker-card score-card">
<div class="card-header" style="margin: 0;">⭐ Score</div>
<div class="score-badge"><<print $score>> pts</div>
</div>
<!-- 3D VIRTUAL DICE -->
<div class="tracker-card dice-card">
<div class="card-header">🎲 VIRTUAL DICE</div>
<div class="dice-container">
<div class="dice-box">
<div id="cube" class="cube">
<div class="front">1</div><div class="back">2</div>
<div class="right">3</div><div class="left">4</div>
<div class="top">5</div><div class="bottom">6</div>
</div>
</div>
<div id="dice-roll-ui" class="dice-button <<if $roll_needed == ''>>disabled<</if>>">
<<link "ROLL DIE">>
<<if $roll_needed != "">>
<<set $last_roll to random(1, 6)>>
<<run $('#dice-roll-ui').addClass('disabled')>>
<<run window.rollDice($last_roll)>>
<<timed 1.2s>>
<<set $roll_needed to "">>
<<run SugarCube.Engine.play(SugarCube.State.passage)>>
<</timed>>
<</if>>
<</link>>
</div>
</div>
</div>
<div class="tracker-card">
<div class="card-header">🎒 Inventory</div>
<<if $inventory.length == 0>>
<div class="empty-state">Empty — no emails sent yet!</div>
<<else>>
<<for _item range $inventory>>
<div class="item-pill"><<print _item>></div>
<</for>>
<</if>>
</div>
<div class="tracker-card">
<div class="card-header">
<span>📒 Vocab</span>
<span class="vocab-count"><<print $vocab_list.length>> words</span>
</div>
<<if $vocab_list.length == 0>>
<div class="empty-state">Click blue words to learn!</div>
<<else>>
<div class="vocab-list">
<<for _word range $vocab_list>>
<div class="vocab-word">
<span class="vocab-icon">▸</span>
<span><<print _word>></span>
</div>
<</for>>
</div>
<</if>>
</div>
<div id="theme-toggle-container">
<<button "🌓 Thème (Clair/Sombre)">>
<<if $theme == "dark">>
<<set $theme to "light">>
<<run $('body').addClass('theme-light').removeClass('theme-dark')>>
<<else>>
<<set $theme to "dark">>
<<run $('body').addClass('theme-dark').removeClass('theme-light')>>
<</if>>
<</button>>
</div>
</div>
<</nobr>><h1>Welcome to the office!</h1>
Ready for a day of business English? What's your name?
<div style="margin: 20px 0;">
<<textbox "$playerName" "Junior" "IntroPage" autofocus>>
</div>
<div style="text-align: center; margin-top: 30px;">
<<button "Continue">>
<<if $playerName.trim() is "">>
<<set $playerName to "Junior">>
<</if>>
<<goto "IntroPage">>
<</button>>
</div><h1>How this game works 🎓</h1>
Welcome to <strong>A Day at the Office</strong>! 💼
An interactive 6-hour workday in business English — meetings, emails, small talk, lunch, debrief.
🔹 <strong>Blue words</strong> (like <<linkreplace "this one">><span class="vocab-reveal">this one (<span class="french-trans">celui-ci</span>)</span><</linkreplace>>) are <strong>clickable</strong>. Click to reveal the French translation and add the word to your vocabulary list.
Watch the <strong>left sidebar</strong> for your live stats:
🕘 Hour · ⚠️ Confidence · ⭐ Score · 🎒 Inventory · 🎲 Dice · 🧠 Vocab
A Twine game by <strong>The English Workshop</strong> · Pau & Bordeaux · Business English, the real-life way.
<div style="text-align:center;margin-top:30px;">
<<button "Let's start the day">><<goto "NameInput">><</button>>
</div><h1>9 AM, <span class="player-name">$playerName</span> — Day at the Office</h1>
You're a junior project manager at a UK-based software company. Today is your first day working with the new <<linkreplace "client">><span class="vocab-reveal">client (<span class="french-trans">client (entreprise qui nous achète)</span>)</span><<run $vocab_list.push("Client : client (entreprise qui nous commande)")>><<set $score += 1>><</linkreplace>>, a German bank called ''Helvetia Trust''.
You've prepared your <<linkreplace "agenda">><span class="vocab-reveal">agenda (<span class="french-trans">ordre du jour, programme</span>)</span><<run $vocab_list.push("Agenda : ordre du jour")>><<set $score += 1>><</linkreplace>>. The team's daily <<linkreplace "standup">><span class="vocab-reveal">standup (<span class="french-trans">réunion debout rapide (15 min max))</span>)</span><<run $vocab_list.push("Standup : réunion debout rapide")>><<set $score += 1>><</linkreplace>> starts in 5 minutes.
<div class="signage">
💡 <strong>Business English tip:</strong> In Anglo offices, <<linkreplace "small talk">><span class="vocab-reveal">small talk (<span class="french-trans">conversation légère, bavardage poli avant le vrai sujet</span>)</span><<run $vocab_list.push("Small talk : bavardage poli")>><<set $score += 1>><</linkreplace>> matters a lot. Skipping it makes you seem cold.
</div>
[[Head to the standup|Standup]]
[[Stop at the kitchen for coffee first|KitchenCoffee]]
[[Reply to your overnight emails first|EmailInbox]]
<div class="tew-footer">
Made for you by <a href="https://the-english-workshop.com/">The English Workshop</a> · Pau & Bordeaux, France
</div><h1>🕘 9:00 AM — Daily Standup</h1>
The team is gathered around a small table. Sarah, the team lead, smiles at you.
"Morning, team. Quick round: what did you do yesterday, what's planned today, anything blocking?"
You realise you're expected to speak up first.
[[Go first with a quick status update|StandupConfident]]
[[Wait for someone else|StandupTimid]]
[[Write it in the chat|StandupChat]]<h1>Your first standup</h1>
"Morning, everyone. Yesterday I finished the data export. Today I'm working on the client's KPI dashboard. No blockers."
Sarah nods. "Good. Love the directness."
<div class="pedagogy pedagogy-success">
✅ Three short sentences. No extra explanations. That's what an Anglo team expects: <em>yesterday / today / blockers</em>.
</div>
<<set $confidence += 2>><<set $score += 2>>
<<run $vocab_list.push("Yesterday / Today / Blockers : 3 axes du standup")>><<set $score += 1>>
<<inventory_alert "💪" "Confidence +2! Standup clean, like a pro.">>
[[Back to your desk for email cleanup|EmailInbox]]<h1>You waited too long</h1>
You wait. Sarah calls out: "$playerName, you're next."
You blush, stumble: "Um, I did some stuff yesterday. And I will do some other stuff today. I think."
The team smiles politely. Sarah says: "Could you be a bit more specific?"
<div class="pedagogy pedagogy-error">
❌ Anglo teams hate vague answers. "Some stuff" is not enough. Be specific! Confidence -2.
</div>
<<set $confidence -= 2>><<set $mistakes += 1>>
[[Try again with specifics|StandupConfident]]
[[Promise to be clearer next time|EmailInbox]]<h1>Standup via chat</h1>
You type your update in the team chat:
<em>Yesterday: data export. Today: KPI dashboard. No blockers.</em>
Sarah reads it aloud: "Great. Communication style — direct and clear, like I like it."
<div class="pedagogy pedagogy-info">
💬 Writing = OK if you're shy, but speaking in person is better. Goal: learn to switch between the two.
</div>
<<set $score += 1>>
<<run $vocab_list.push("Update : mise à jour, point d'avancement")>><<set $score += 1>>
[[Head to your desk for emails|EmailInbox]]<h1>🕘 9:45 AM — Email Inbox</h1>
You open your inbox. Three emails wait:
1. From your manager: ''Please send me the weekly report by 11 AM.''
2. From the client: ''We need to reschedule tomorrow's call.''
3. From a colleague: ''Lunch today? 12:30?''
Each one needs a different kind of <<linkreplace "tone">><span class="vocab-reveal">tone (<span class="french-trans">ton, registre (formel vs décontracté)</span>)</span><<run $vocab_list.push("Tone : ton (formel / décontracté)")>><<set $score += 1>><</linkreplace>>.
[[Reply to the manager first|ReplyManager]]
[[Reply to the client first|ReplyClient]]
[[Reply to your colleague first|ReplyColleague]]<h1>Reply to your manager</h1>
You write:
<em>Hi Sarah,
The weekly report is on track. I'll send it by 11 AM as requested.
Best,
$playerName</em>
<div class="pedagogy pedagogy-success">
✅ Short, clear, professional. "As requested" = polite reminder of the deadline. +2 score, +1 confidence.
</div>
<<set $score += 2>><<set $confidence += 1>>
<<run $vocab_list.push("As requested : comme demandé")>><<set $score += 1>>
<<run $inventory.push("Weekly report sent (11 AM deadline)")>>
[[Reply to the client|ReplyClient]]
[[Reply to your colleague|ReplyColleague]]<h1>Reply to the client</h1>
You write:
<em>Dear Mr. Schmidt,
Thank you for your message. I'm available tomorrow between 2 PM and 4 PM CET. Would either time work for you?
Looking forward to your reply.
Kind regards,
$playerName</em>
<div class="pedagogy pedagogy-success">
✅ <strong>Anatomy of a professional email:</strong> ''Dear'' → context → ''Looking forward'' → ''Kind regards''. +3 score, +1 confidence.
</div>
<<set $score += 3>><<set $confidence += 1>>
<<run $vocab_list.push("Looking forward to your reply : dans l'attente de votre réponse")>><<set $score += 1>>
<<run $vocab_list.push("Kind regards : cordialement (plus chaleureux que 'regards')")>><<set $score += 1>>
<<run $inventory.push("Email to Mr. Schmidt (Helvetia Trust)")>>
[[Reply to the manager|ReplyManager]]
[[Reply to your colleague|ReplyColleague]]<h1>Reply to your colleague</h1>
You write:
<em>Hey Alex,
Sounds good! See you at 12:30.
Cheers,
$playerName</em>
<div class="pedagogy pedagogy-info">
💬 Anglo style: "Hey" + "sounds good" + "Cheers" = cool and casual. Compare with the client: "Dear" + "Kind regards".
</div>
<<set $score += 1>>
<<run $vocab_list.push("Sounds good : ça marche (= 'OK, perfect')")>><<set $score += 1>>
<<run $inventory.push("Lunch confirmed with Alex (12:30)")>>
[[Reply to the manager|ReplyManager]]
[[Reply to the client|ReplyClient]]<h1>🕚 11:00 AM — Kitchen run</h1>
You walk to the kitchen. Sarah is making tea. She smiles.
"How's your morning going?"
This is <<linkreplace "small talk">><span class="vocab-reveal">small talk (<span class="french-trans">conversation légère avant le vrai sujet</span>)</span><<run $vocab_list.push("Small talk : bavardage poli")>><<set $score += 1>><</linkreplace>> — don't dive into client problems yet.
[[Talk about the weather|SmallTalkWeather]]
[[Talk about the office coffee machine|SmallTalkCoffee]]
[[Skip small talk and ask about the project|SmallTalkJumpIn]]<h1>Talking about the weather</h1>
"Not bad, thanks! Lovely day out, isn't it? Is this heat normal in London for August?"
Sarah laughs. "Honestly? No idea. Let's ask Alex — he's been here 5 years."
You talk for 5 minutes about <<linkreplace "weather">><span class="vocab-reveal">weather (<span class="french-trans">météo, temps qu'il fait</span>)</span><<run $vocab_list.push("Weather : météo, temps")>><<set $score += 1>><</linkreplace>>, then she asks about your project.
<div class="pedagogy pedagogy-success">
✅ Small talk = social glue. Bonding before tasking. +2 confidence.
</div>
<<set $confidence += 2>>
<<run $vocab_list.push("Lovely day out, isn't it? : il fait beau, n'est-ce pas ?")>><<set $score += 1>>
[[Head back to your desk|LunchTime]]<h1>Talk about the coffee machine</h1>
"Going well! How do you find the coffee machine? I'm trying to figure out how to make a flat white."
Sarah shows you the trick. The machine makes a hissing <<linkreplace "noise">><span class="vocab-reveal">noise (<span class="french-trans">bruit (aléatoire ou répétitif)</span>)</span><<run $vocab_list.push("Noise : bruit")>><<set $score += 1>><</linkreplace>>.
You laugh. She laughs.
<div class="pedagogy pedagogy-success">
☕ Talk about the coffee machine = neutral and required conversation. +1 confidence.
</div>
<<set $confidence += 1>>
<<run $vocab_list.push("Flat white : café au lait à l'australienne")>><<set $score += 1>>
[[Head back to your desk|LunchTime]]<h1>Skipping small talk</h1>
"Fine, thanks! Listen, Sarah, I wanted to ask about the Helvetia deal—"
She <<linkreplace "cuts">><span class="vocab-reveal">cuts in (<span class="french-trans">interrompt au milieu</span>)</span><<run $vocab_list.push("Cut in : interrompre")>><<set $score += 1>><</linkreplace>> you gently: "How was your weekend, by the way?"
You realise you skipped the social <<linkreplace "warm-up">><span class="vocab-reveal">warm-up (<span class="french-trans">échauffement, mise en route</span>)</span><<run $vocab_list.push("Warm-up : échauffement, mise en route")>><<set $score += 1>><</linkreplace>>.
<div class="pedagogy pedagogy-error">
❌ Going straight to business feels rude in Anglo offices. Confidence -1.
</div>
<<set $confidence -= 1>>
[[Recover with small talk|SmallTalkWeather]]<h1>🕛 12:30 PM — Lunch with Alex</h1>
Alex has booked a casual sandwich place around the corner. You arrive. He says: "Glad you could make it! What are you having?"
The menu has lots of options you don't know.
[[Order something safe (chicken sandwich)|LunchSafe]]
[[Ask the waiter for a recommendation|LunchReco]]
[[Roll the dice to see what you order|LunchDiceSetup]]<h1>Safe choice</h1>
"I'll have the chicken sandwich, please. And a sparkling water."
Alex nods. "Good choice. Same for me."
<div class="pedagogy pedagogy-success">
✅ "Same for me" = the most-used phrase at the Anglo restaurant. +1 score.
</div>
<<set $score += 1>>
<<run $vocab_list.push("Same for me : la même chose pour moi")>><<set $score += 1>>
<<run $vocab_list.push("Sparkling water : eau pétillante")>><<set $score += 1>>
[[Talk about work|LunchTalkWork]]<h1>The waiter's recommendation</h1>
"What would you recommend?"
The waiter smiles. "Today the roast beef is excellent. Today's special."
<<set $score += 2>>
<<run $vocab_list.push("Today's special : plat du jour")>><<set $score += 1>>
[[Order it|LunchSafe]]
[[Politely decline the special|LunchDecline]]<h1>Polite decline</h1>
"Hmm, no, I'll just have the chicken sandwich. Thank you, though."
The waiter says: "Sure, no worries."
<div class="pedagogy pedagogy-info">
🇦🇺🇬🇧 "No worries", "no problem", "that's fine" = everywhere in informal English.
</div>
<<set $score += 1>>
<<run $vocab_list.push("No worries : pas de souci")>><<set $score += 1>>
[[Continue lunch|LunchTalkWork]]<h1>🎲 Lunch is a dice roll</h1>
You decide this is fun. Spin the dice for what's on your menu.
<<if $last_roll == 0>>
<<set $roll_needed to "LunchDiceSetup">>
<div class="pedagogy pedagogy-info">
🎲 <strong>Roll the die in the sidebar!</strong> Let's see what you're having for lunch.
</div>
<<else>>
<<set _dice to $last_roll>>
<<set $last_roll to 0>>
<<if _dice gte 4>>
<div class="pedagogy pedagogy-success">
🎲 Lucky pick! You get the fish and chips. Alex laughs: "Classic!" Score +1.
</div>
<<set $score += 1>>
<<run $vocab_list.push("Fish and chips : poisson-frites, le plat britannique")>><<set $score += 1>>
<<else>>
<div class="pedagogy pedagogy-error">
🎲 You accidentally point at the "Kid's Meal" section. The waiter smirks. Confidence -1.
</div>
<<set $confidence -= 1>>
<</if>>
[[Continue lunch|LunchTalkWork]]
<</if>><h1>What do you think of the team?</h1>
Alex asks: "So, what do you think of the team?"
[[Be honest (positive)|LunchHonestPositive]]
[[Be honest (mixed)|LunchHonestMixed]]
[[Give a diplomatic answer|LunchDiplomatic]]<h1>Honest and positive</h1>
"Honestly? Everyone is brilliant. I learn a lot."
He smiles. "Glad to hear it. Welcome to the team."
<<set $confidence += 1>>
<<run $vocab_list.push("Honestly? : franchement ?")>><<set $score += 1>>
[[Lunch ends — head back for the 2 PM meeting|MeetingSetup]]<h1>Honest and mixed</h1>
"Mixed feelings. Some things are very fast, others feel chaotic."
Alex raises an eyebrow. "Interesting. Let's chat offline."
<div class="pedagogy pedagogy-info">
🗣️ Critical feedback in Anglo culture = fine, but NEVER in writing until you've spoken to the person first.
</div>
<<set $score += 2>>
<<run $vocab_list.push("Mixed feelings : avis mitigé")>><<set $score += 1>>
[[Lunch ends|MeetingSetup]]<h1>Diplomatic answer</h1>
"It's still new for me, I'm figuring it out."
Alex nods. "Fair enough. Don't hesitate if you have questions."
<<set $confidence += 1>>
<<run $vocab_list.push("Don't hesitate : n'hésitez pas")>><<set $score += 1>>
[[Lunch ends|MeetingSetup]]<h1>🕑 2:00 PM — Client Meeting</h1>
The conference room is set up. Sarah has briefed you: the German team will dial in.
She hands you the agenda. Your role: take <<linkreplace "minutes">><span class="vocab-reveal">minutes (<span class="french-trans">compte-rendu de réunion (= procès-verbal)</span>)</span><<run $vocab_list.push("Minutes : compte-rendu de réunion")>><<set $score += 1>><</linkreplace>>.
The German team joins. Mr. Schmidt says: "Good afternoon, everyone. Shall we <<linkreplace "kick off">><span class="vocab-reveal">kick off (<span class="french-trans">démarrer, lancer</span>)</span><<run $vocab_list.push("Kick off : démarrer")>><<set $score += 1>><</linkreplace>>?"
[[Answer the kickoff|MeetingKickoff]]
[[Wait for Sarah|MeetingWaitSarah]]<h1>You speak up</h1>
"Yes, let's kick off. Sarah, would you like to start?"
She <<linkreplace "runs">><span class="vocab-reveal">runs through (<span class="french-trans">parcourt rapidement</span>)</span><<run $vocab_list.push("Run through : parcourir, présenter en diagonale")>><<set $score += 1>><</linkreplace>> the agenda. You take notes.
Mr. Schmidt <<linkreplace "chimes in">><span class="vocab-reveal">chime in (<span class="french-trans">intervenir, dire quelque chose</span>)</span><<run $vocab_list.push("Chime in : intervenir")>><<set $score += 1>><</linkreplace>>: "We need a deadline for the dashboard."
<div class="pedagogy pedagogy-success">
✅ "Run through", "chime in", "kick off" = 3 key phrases in meetings. +3 score.
</div>
<<set $score += 3>><<set $confidence += 1>>
[[Propose a deadline|MeetingDeadline]]
[[Defer to Sarah|MeetingDeferSarah]]<h1>You wait</h1>
You nod silently. Sarah takes over. Mr. Schmidt looks at you and says: "And you are?"
You freeze. Sarah <<linkreplace "jumps in">><span class="vocab-reveal">jump in (<span class="french-trans">intervenir rapidement pour aider</span>)</span><<run $vocab_list.push("Jump in : intervenir rapidement")>><<set $score += 1>><</linkreplace>> and introduces you.
<div class="pedagogy pedagogy-error">
❌ In meetings, silence = invisibility. Confidence -1.
</div>
<<set $confidence -= 1>>
[[Propose a deadline|MeetingDeadline]]
[[Defer to Sarah|MeetingDeferSarah]]<h1>You propose a deadline</h1>
"Based on our team capacity, I propose we <<linkreplace "deliver">><span class="vocab-reveal">deliver (<span class="french-trans">livrer, fournir</span>)</span><<run $vocab_list.push("Deliver : livrer, fournir")>><<set $score += 1>><</linkreplace>> the dashboard by 30 September. How does that sound?"
Mr. Schmidt: "Works for us. Thank you."
<div class="pedagogy pedagogy-success">
🎯 "How does that sound?" = the validation phrase in meetings. +3 score, +1 confidence.
</div>
<<set $score += 3>><<set $confidence += 1>>
<<run $vocab_list.push("How does that sound? : ça vous convient ?")>><<set $score += 1>>
[[Meeting ends|Day5pm]]<h1>You defer to Sarah</h1>
"Sarah, what do you think?"
Sarah <<linkreplace "steps in">><span class="vocab-reveal">step in (<span class="french-trans">intervenir / prendre le relais</span>)</span><<run $vocab_list.push("Step in : prendre le relais")>><<set $score += 1>><</linkreplace>>: "30 September is doable." She winks at you: "Next time, you take this one."
<div class="pedagogy pedagogy-info">
🪜 Deferring early in your career = OK. But watch out: don't do it every time.
</div>
<<set $score += 1>>
[[Meeting ends|Day5pm]]<h1>🕔 5:00 PM — End of day wrap-up</h1>
The day is ending. Sarah calls you over.
"$playerName, can I have a quick word before you go?"
This is your <<linkreplace "one-on-one">><span class="vocab-reveal">one-on-one (<span class="french-trans">entretien en tête-à-tête (souvent hebdo)</span>)</span><<run $vocab_list.push("One-on-one : tête-à-tête (réunion)")>><<set $score += 1>><</linkreplace>>.
"Just a quick <<linkreplace "feedback">><span class="vocab-reveal">feedback (<span class="french-trans">retour, évaluation (constructive ou non)</span>)</span><<run $vocab_list.push("Feedback : retour, évaluation")>><<set $score += 1>><</linkreplace>>. You've done well today. Solid emails, good listening in the meeting."
[[Thank her|DayThankSarah]]
[[Ask for more feedback|DayAskSarah]]<h1>End of day affirmation</h1>
"Thank you, Sarah. That means a lot."
She smiles. "See you tomorrow, 9 AM sharp. And bring your A-game."
<<run $vocab_list.push("A-game : votre meilleur niveau")>><<set $score += 1>>
<<set $confidence += 2>>
<<inventory_alert "💪" "Confidence +2! End-of-day affirmation from Sarah.">>
[[🧠 Take the Daily Vocab Review|VocabReview]] <<set $review_init to true>>
[[See your final results|GameCompleted]]<h1>Asking for more feedback</h1>
"Thanks, Sarah. Anything I should improve for tomorrow?"
She <<linkreplace "thinks">><span class="vocab-reveal">thinks it over (<span class="french-trans">réfléchit un instant</span>)</span><<run $vocab_list.push("Think it over : réfléchir")>><<set $score += 1>><</linkreplace>>: "Speak up more in meetings. You're smart, but invisible. Sound like you?"
You <<linkreplace "acknowledge">><span class="vocab-reveal">acknowledge (<span class="french-trans">reconnaître, admettre</span>)</span><<run $vocab_list.push("Acknowledge : reconnaître, admettre")>><<set $score += 1>><</linkreplace>>: "Sound like me. Thank you."
<div class="pedagogy pedagogy-success">
🎯 Anglo "feedback culture" = ask, listen, act. +3 score, +1 confidence.
</div>
<<set $score += 3>><<set $confidence += 1>>
[[🧠 Take the Daily Vocab Review|VocabReview]] <<set $review_init to true>>
[[End of day|GameCompleted]]🎉 <strong>CONGRATULATIONS! YOU COMPLETED YOUR FIRST BUSINESS-ENGLISH DAY!</strong> 🎉
You survived standups, emails to your manager and a German client, lunch small talk, and a 2 PM conference call. Tomorrow you'll be sharper.
<div class="pedagogy pedagogy-info">
📊 <strong>--- FINAL STATS ---</strong><br>
⭐ <strong>Total Score:</strong> <<print $score>> points<br>
💪 <strong>Final Confidence:</strong> <<print $confidence>> / <<print $max_confidence>><br>
📝 <strong>Mistakes Made:</strong> <<print $mistakes>><br>
</div>
<div class="signage">
🎒 <strong>TODAY'S OUTPUT</strong><br>
<<if $inventory.length == 0>>
Nothing? A quiet first day.
<<else>>
<ul>
<<for _i to 0; _i lt $inventory.length; _i++>>
<li><<print $inventory[_i]>></li>
<</for>>
</ul>
<</if>>
</div>
<div class="signage">
💼 <strong>YOUR BUSINESS VOCABULARY</strong><br>
You learned <strong><<print $vocab_list.length>></strong> new business terms!<br><br>
<ul>
<<for _i to 0; _i lt $vocab_list.length; _i++>>
<li><<print $vocab_list[_i]>></li>
<</for>>
</ul>
</div>
<<if $score gte 35>>
<h2 style="color:#14b8a6;">🏆 RANK: BUSINESS NATIVE</h2>
Bravo! You speak like a London office native. Sarah is going to promote you.
<<elseif $score gte 22>>
<h2 style="color:#fbbf24;">⭐ RANK: SOLID PROFESSIONAL</h2>
Nicely done. You're ready for a mid-size client meeting solo.
<<else>>
<h2 style="color:#94a3b8;">🌱 RANK: APPRENTICE</h2>
You survived your first day. Tomorrow will be easier — your vocabulary is now stocked.
<</if>>
<br>
<div class="tew-footer" style="margin-top:30px;">
💼 Want more? Try <strong><a href="a-week-in-london.html">A Week in London</a></strong> or <strong><a href="a-weekend-in-paris.html">A Weekend in Paris</a></strong>.
<br><br>
A Twine game by <a href="https://the-english-workshop.com/">The English Workshop</a> · Pau & Bordeaux
</div><<nobr>>
<<if $review_init is true>><<set $review_init to false>><<set $review_score to 0>><<set $review_total to Math.min($vocab_list.length, 5)>><<set $review_queue to [].concat($vocab_list).sort(() => Math.random() - 0.5).slice(0, $review_total)>><<set $review_index to 0>><<set $review_feedback to "">><</if>>
<<if $review_total == 0>><div class="quiz-container"><div class="quiz-feedback">No words collected yet! Click the blue words in the story first, then come back.</div></div><<else>><<set _currentRaw to $review_queue[$review_index]>><<set _splitIdx to _currentRaw.indexOf(" : ")>><<set _english to _currentRaw.slice(0, _splitIdx)>><<set _french to _currentRaw.slice(_splitIdx + 3)>>
<<set _sentence to window.getFillBlank(_english)>>
<<set _type to random(1, 3)>>
<<if _type == 3 and _sentence is null>><<set _type to random(1, 2)>><</if>>
<div class="quiz-container">
<div class="card-header">Question <<print $review_index + 1>> / <<print $review_total>></div>
<<if _type == 1>>
<div class="quiz-question">How do you say "''<<print _english>>''" in French?</div>
<div class="quiz-options"><<set _options to window.getQuizOptions(_currentRaw, $vocab_list)>><<for _opt range _options>><<capture _opt>><<set _optParts to window.vocabSplit(_opt)>><div class="quiz-option"><<link _optParts[1]>><<if _opt == _currentRaw>><<set $review_score += 1>><<set $score += 2>><<set $review_feedback to "✅ Correct! " + _english + " means " + _french + ".">><<run SugarCube.Engine.play("VocabReviewNext")>><<else>><<set $mistakes += 1>><<set $review_feedback to "❌ Not quite. " + _english + " means " + _french + ".">><<run SugarCube.Engine.play("VocabReviewNext")>><</if>><</link>></div><</capture>><</for>></div>
<<elseif _type == 2>>
<div class="quiz-question">Which English word means "''<<print _french>>''"?</div>
<div class="quiz-options"><<set _options to window.getQuizOptions(_currentRaw, $vocab_list)>><<for _opt range _options>><<capture _opt>><<set _optParts to window.vocabSplit(_opt)>><div class="quiz-option"><<link _optParts[0]>><<if _opt == _currentRaw>><<set $review_score += 1>><<set $score += 2>><<set $review_feedback to "✅ Correct! " + _english + " is the right word.">><<run SugarCube.Engine.play("VocabReviewNext")>><<else>><<set $mistakes += 1>><<set $review_feedback to "❌ Wrong one. The correct word was " + _english + ".">><<run SugarCube.Engine.play("VocabReviewNext")>><</if>><</link>></div><</capture>><</for>></div>
<<else>>
<div class="quiz-question">Fill in the blank:<br>''<<print _sentence.replace("___", "<span style='color:#14b8a6;font-size:1.2em'>______</span>")>>''
<br><span style="font-size:0.85em;color:#94a3b8">(<<print _french>>)</span></div>
<div class="quiz-options"><<set _options to window.getQuizOptions(_currentRaw, $vocab_list)>><<for _opt range _options>><<capture _opt>><<set _optParts to window.vocabSplit(_opt)>><div class="quiz-option"><<link _optParts[0]>><<if _opt == _currentRaw>><<set $review_score += 1>><<set $score += 2>><<set $review_feedback to "✅ Correct! The sentence is: " + _sentence.replace("___", _english) + ".">><<run SugarCube.Engine.play("VocabReviewNext")>><<else>><<set $mistakes += 1>><<set $review_feedback to "❌ Not quite. The answer was: " + _english + ".">><<run SugarCube.Engine.play("VocabReviewNext")>><</if>><</link>></div><</capture>><</for>></div>
<</if>>
</div>
<</if>>
<</nobr>><<nobr>>
<div class="quiz-container">
<div class="quiz-feedback"><<print $review_feedback>></div>
<<set $review_index += 1>>
<<if $review_index < $review_total>>
[[Next Question|VocabReview]]
<<else>>
<h3>Review Complete!</h3>
<p>You got <<print $review_score>> / <<print $review_total>> correct.</p>
<<if $review_score == $review_total and $review_total > 0>>
<div class="perfect-score">
🌟 PERFECT REVIEW! 🌟<br>
<<if $confidence == $max_confidence>><<set $max_confidence += 1>><<set $confidence += 1>>Max Confidence increased to <<print $max_confidence>>!
<<else>><<set $confidence += 1>>Confidence increased!
<</if>>
</div>
<</if>>
<<link "See your final results...">><<goto "GameCompleted">><</link>>
<</if>>
</div>
<</nobr>><<widget "inventory_alert">>
<<run window.showNotification(_args[0], _args[1])>>
<</widget>>