"""Hand-built reference grouping of the Plain Tales predicaments (Claude-written, no local inference). Each scene is in at most one group; scenes that fit no recurring situation stay unassigned. Every group spans at least three of the 35 stories, has at least five scenes, and no story supplies more than half a group's members. Options follow DESIGN.md: 3-5 per group, each marked by where it came from -- 'archetype' a fixed, setting-free option 'scene:N' what someone in scene N actually did (or refused to do) 'filled' written to fill a gap the scenes leave `moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never chooses a number. Skill labels proposed for this corpus: tact (handling people, reading the unwritten rules, keeping a thing quiet) and cunning (kept from Jacobs: the trick, the lever, the used secret). """ G = [ # ---- patronage, influence, getting heard ------------------------------------------------------------ dict(id='G01', name='A word from someone powerful', predicament='What you want will go to whoever has someone powerful speaking for them, and nobody powerful is speaking for you.', actor='junior with no connections', wants='a good place', counterpart='someone with influence', members=[34, 35, 37, 92, 93, 127, 172], options=[ ('Do someone influential a daring favour, then ask for yours.', 'scene:93', {'cunning':'+', 'relationships.patron':'+', 'flags.favour_owed':'set'}), ('Take the place your family arranged, and be grateful.', 'scene:37', {'standing':'+', 'relationships.family':'+', 'flags.placed_by_favour':'set'}), ('Turn the powerful person you offended into your ally.', 'scene:34', {'tact':'+', 'relationships.patron':'+', 'standing':'risk'}), ('Find out whose favourite is after your place.', 'filled', {'cunning':'+', 'relationships.rival':'-'}), ('Let your work speak for itself, and wait.', 'archetype', {'standing':'-'})]), dict(id='G02', name='The power behind the title', predicament='The person with the title is not the one who decides, and the one who really does answers to nobody.', actor='person below', wants='to stay on the right side of the real power', counterpart='someone with sway but no title', members=[79, 94, 106, 111, 116], options=[ ('Court them quietly, as everyone else does.', 'archetype', {'relationships.power_broker':'+', 'standing':'+'}), ('Keep out of their way and give them nothing to talk about.', 'filled', {'tact':'+'}), ('Ask them to use their pull for you, and leave the rest to them.', 'scene:115', {'relationships.power_broker':'+', 'flags.in_their_debt':'set'}), ('Let them overreach, then tell the story against them in public.', 'scene:111', {'cunning':'+', 'relationships.power_broker':'-', 'standing':'+'}), ('Defy them, whatever they say about you afterwards.', 'scene:81', {'standing':'risk', 'relationships.power_broker':'-', 'flags.made_an_enemy':'set'})]), dict(id='G03', name='One chance to be heard at the top', predicament='The one person who can settle your matter is almost impossible to reach, and you may get a single chance to be heard.', actor='person with a case', wants='a hearing', counterpart='someone at the very top', members=[98, 99, 108, 109, 110, 184, 185], options=[ ('Go straight to the most powerful person you can reach, and show what you know.', 'scene:98', {'cunning':'+', 'standing':'risk', 'relationships.the_top':'risk'}), ('Put your case plainly and let it stand.', 'scene:184', {'tact':'+', 'relationships.the_top':'+'}), ('Make a spectacle of it, so they cannot forget you.', 'scene:110', {'standing':'risk', 'relationships.the_top':'+', 'flags.made_a_scene':'set'}), ('Win over someone they already listen to.', 'filled', {'tact':'+', 'relationships.go_between':'+'}), ('Go through the proper channels, and wait.', 'archetype', {'relationships.gatekeeper':'+'})]), dict(id='G04', name='A change imposed by someone who does not know the ground', predicament='Someone set over you is imposing a change on something they do not understand, and nobody who knows better has been asked.', actor='person below', wants='the old ways kept, or at least a say', counterpart='someone newly in charge', members=[95, 180, 181, 205, 206, 247], options=[ ('Obey, and keep your opinion to yourself.', 'archetype', {'relationships.superior':'+', 'relationships.company':'-'}), ('Offer to put it right yourselves, at your own cost.', 'scene:206', {'money':'-', 'relationships.company':'+', 'relationships.superior':'-'}), ('Get the facts to them through someone they will listen to.', 'scene:184', {'tact':'+', 'relationships.superior':'+'}), ('Work quietly round the order.', 'scene:207', {'cunning':'+', 'relationships.superior':'risk', 'flags.defied_quietly':'set'}), ('Grumble with the others, and change nothing.', 'scene:247', {'relationships.company':'+'})]), dict(id='G05', name='Knowing what goes on below', predicament='You know what really goes on among people nobody above you bothers to ask, and that knowledge could settle a matter.', actor='person who mixes below', wants='to put what they know to use', counterpart='those who never ask', members=[32, 179, 182, 221, 222, 279], options=[ ('Tell the people at the top what they have not heard.', 'scene:182', {'standing':'+', 'relationships.the_top':'+'}), ('Go among them yourself, quietly, and find out.', 'scene:221', {'cunning':'+', 'standing':'risk', 'flags.went_among_them':'set'}), ('Let the liars see that you know, and watch them fold.', 'scene:222', {'cunning':'+', 'relationships.accuser':'-'}), ('Keep it to yourself: nobody above values it anyway.', 'scene:28', {'standing':'-'}), ('Trade what you know for a better place.', 'filled', {'money':'+', 'relationships.the_top':'+', 'relationships.informants':'-'})]), # ---- work, merit, strain ---------------------------------------------------------------------------- dict(id='G06', name='Good work that counts for nothing', predicament='You do the job better than those above you, and it earns you nothing but their resentment.', actor='capable junior', wants='credit for good work', counterpart='those above who take it', members=[16, 27, 29, 190, 263], options=[ ('Keep doing it well, and say nothing.', 'archetype', {'standing':'-', 'flags.unrewarded':'set'}), ('Go back to doing it your own way once their anger passes.', 'scene:29', {'standing':'-', 'relationships.superiors':'-'}), ('Take nothing seriously, since good work goes to others anyway.', 'scene:16', {'relationships.colleagues':'+', 'standing':'-'}), ('Make sure the right person sees what you did.', 'filled', {'tact':'+', 'standing':'+', 'relationships.superiors':'risk'})]), dict(id='G07', name='Work nobody sees', predicament='You are carrying far more work than anyone knows, and the only people who notice are the ones who profit from it.', actor='overloaded worker', wants='to hold it all together', counterpart='those who pile it on', members=[103, 163, 174, 189, 199, 200, 264, 267], options=[ ('Sit up nights and get it all done.', 'scene:199', {'standing':'+', 'flags.overworked':'set'}), ('Keep going on their praise alone.', 'scene:264', {'relationships.superiors':'+', 'flags.overworked':'set'}), ('Tell someone what you are carrying.', 'filled', {'relationships.colleagues':'+', 'standing':'-'}), ('Find your own private relief, and tell nobody.', 'scene:163', {'standing':'risk', 'flags.secret_vice':'set'}), ('Take the rest you are owed.', 'archetype', {'standing':'-'})]), dict(id='G08', name='The strain gives way', predicament='The strain you hid for months has finally broken through, and now everyone can see what it has done to you.', actor='person at breaking point', wants='to recover without losing everything', counterpart='those who see it', members=[104, 105, 154, 166, 193, 201], options=[ ('Take leave, and go away to mend.', 'scene:105', {'standing':'-', 'flags.on_leave':'set'}), ('Throw it all up and walk away.', 'scene:193', {'standing':'-', 'money':'-', 'flags.walked_out':'set'}), ('Beg to be let go quietly.', 'scene:154', {'relationships.superior':'+', 'standing':'-'}), ('Let it be passed off as illness, and carry on.', 'scene:167', {'standing':'+', 'flags.covered_up':'set'}), ('Snap back at whoever pushed you there.', 'scene:201', {'relationships.tormentor':'-', 'standing':'risk'})]), # ---- newcomers and first posts ---------------------------------------------------------------------- dict(id='G09', name='The rules nobody tells you', predicament='You are new, and everyone around you follows rules nobody will explain until you have broken them.', actor='newcomer', wants='to fit in on their own terms', counterpart='the old hands', members=[17, 100, 102, 139, 170, 171], options=[ ('Keep telling them how things ought to be done.', 'scene:171', {'relationships.old_hands':'-', 'standing':'risk'}), ('Take the teasing without a word, and bide your time.', 'scene:140', {'tact':'+', 'relationships.old_hands':'+'}), ('Throw yourself into everything they do.', 'scene:17', {'money':'-', 'relationships.old_hands':'+', 'flags.overreached':'set'}), ('Watch and learn before you open your mouth.', 'archetype', {'tact':'+'}), ('Ask someone you trust what is expected.', 'filled', {'relationships.mentor':'+'})]), dict(id='G10', name='Sent out young, with nobody watching', predicament='You have been sent out young to your first real post, far from anyone who knows you, and you are starting to go wrong.', actor='young man in his first post', wants='to make good', counterpart='the people who could warn him and do not', members=[14, 15, 18, 38, 59, 186, 188], options=[ ('Do enough to get by, and congratulate yourself.', 'scene:38', {'standing':'+', 'flags.drifting':'set'}), ('Take one scolding to heart and decide you are ruined.', 'scene:18', {'standing':'-', 'flags.despairing':'set'}), ('Cut your spending and live on what you have.', 'scene:188', {'money':'+', 'relationships.colleagues':'-'}), ('Find an older hand who has been there, and listen.', 'scene:25', {'relationships.mentor':'+'}), ('Write home as if all is well.', 'filled', {'relationships.family':'+', 'flags.hiding_trouble':'set'})]), # ---- marriage and prospects ------------------------------------------------------------------------- dict(id='G11', name='The marriage or the career', predicament='The marriage you want would cost you your prospects, and the people above you have made clear which they expect you to choose.', actor='ambitious junior', wants='both love and advancement', counterpart='those who control their prospects', members=[36, 73, 77, 113, 114, 187, 191], options=[ ('Marry anyway, and take the consequences.', 'scene:114', {'relationships.beloved':'+', 'standing':'-', 'flags.married_against_advice':'set'}), ('Marry in secret, and keep it from those above you.', 'scene:187', {'relationships.beloved':'+', 'money':'-', 'flags.secret_marriage':'set'}), ('Give up the work you love to win consent.', 'scene:36', {'relationships.beloved':'+', 'standing':'+', 'flags.gave_up_calling':'set'}), ('Earn the promotion first, whatever it takes.', 'scene:75', {'standing':'+', 'money':'+', 'relationships.beloved':'risk'}), ('Let the match go, and keep your career.', 'scene:117', {'standing':'+', 'relationships.beloved':'-'})]), dict(id='G12', name='A good match your heart refuses', predicament='Your family wants you to accept a well-placed match, and your heart is with someone who has no prospects at all.', actor='young woman', wants='to marry for love', counterpart='a family with ambitions for her', members=[30, 39, 64, 86, 87], options=[ ('Give in, and marry where they choose.', 'scene:86', {'relationships.family':'+', 'money':'+', 'relationships.beloved':'-'}), ('Tell them calmly that you have chosen, and keep saying it.', 'scene:2', {'relationships.family':'-', 'standing':'risk'}), ('Let the one you love find a way round your parents.', 'scene:30', {'relationships.beloved':'+', 'cunning':'+'}), ('Slip away to the one you love whenever you can.', 'scene:66', {'relationships.beloved':'+', 'relationships.family':'-'}), ('Wait for them, however long it takes.', 'filled', {'relationships.beloved':'+', 'relationships.family':'-'})]), dict(id='G13', name='Someone else wants them too', predicament='Someone else is after the person you want, and the contest is being fought out in front of everyone you know.', actor='suitor or spouse', wants='the person they love', counterpart='a rival', members=[10, 11, 12, 13, 44, 45, 55, 60, 66, 67, 68, 69], options=[ ('Say nothing, then outshine the rival on one evening.', 'scene:10', {'tact':'+', 'relationships.rival':'-', 'relationships.beloved':'+'}), ('Choose in public, and let the loser be humiliated.', 'scene:68', {'relationships.beloved':'+', 'relationships.rival':'-', 'standing':'risk'}), ('Reclaim them before everyone, laughing.', 'scene:12', {'relationships.beloved':'+', 'standing':'+'}), ('Treat them kindly where the rival used them.', 'scene:61', {'relationships.beloved':'+', 'relationships.rival':'-'}), ('Take your time, and keep everyone guessing.', 'scene:45', {'relationships.beloved':'risk'})]), # ---- reputation, talk, lies ------------------------------------------------------------------------- dict(id='G14', name='Everyone will hear of it', predicament='Something embarrassing has happened, and in a place where everyone knows everyone the story will follow you unless it is kept quiet.', actor='person with a story to bury', wants='to keep their name out of it', counterpart='the gossips', members=[84, 90, 125, 215, 228, 237], options=[ ('Beg the one person who saw it to say nothing.', 'scene:125', {'relationships.witness':'+', 'flags.owes_silence':'set'}), ('Put about a harmless cover story.', 'scene:91', {'cunning':'+', 'flags.cover_story':'set'}), ('Settle it in private, with no public scandal.', 'scene:237', {'tact':'+', 'relationships.culprit':'-'}), ('Punish everyone involved, publicly.', 'scene:214', {'standing':'-', 'relationships.company':'-'}), ('Laugh at it first and loudest.', 'filled', {'tact':'+', 'standing':'+'})]), dict(id='G15', name='Everyone has already decided', predicament='Everything looks against you, and the people whose opinion matters have made up their minds before you can explain.', actor='person wrongly suspected', wants='to be believed', counterpart='those who have judged them', members=[80, 82, 83, 122, 123, 143, 144, 220], options=[ ('Explain again, at length, from the beginning.', 'scene:122', {'standing':'-', 'relationships.accusers':'-'}), ('Deny it flatly and say no more.', 'scene:82', {'relationships.spouse':'-', 'flags.under_suspicion':'set'}), ('Ask to see their proof.', 'scene:144', {'tact':'+', 'standing':'+'}), ('Call in someone who can find out the truth.', 'scene:221', {'cunning':'+', 'relationships.friends':'+'}), ('Keep your temper, and wait for someone who knows you.', 'archetype', {'tact':'+'})]), dict(id='G16', name='A lie to spare them', predicament='The truth would hurt someone badly, and a careful lie would spare them, if you can keep it up.', actor='person holding a painful truth', wants='to spare someone', counterpart='the one who would be hurt', members=[4, 5, 6, 22, 23, 25, 91, 173, 175, 176], options=[ ('Tell the lie, and build it so it will hold.', 'scene:23', {'cunning':'+', 'relationships.deceived':'+', 'flags.kind_lie':'set'}), ('Keep the pretence up to the very end, at your own cost.', 'scene:175', {'money':'-', 'relationships.deceived':'+', 'flags.kind_lie':'set'}), ('Tell the comforting lie that spares you a scene.', 'scene:4', {'relationships.deceived':'risk', 'flags.kind_lie':'set'}), ('Admit the lie when they find you out.', 'scene:6', {'relationships.deceived':'-'}), ('Tell the truth gently, and bear what follows.', 'filled', {'relationships.deceived':'-', 'standing':'+'})]), dict(id='G17', name='Getting even by a trick', predicament='Someone who has wronged or tormented you has a weakness you could use, and a clever trick would pay them back in full.', actor='person with a score to settle', wants='to get even without being caught', counterpart='the one who wronged them', members=[81, 85, 140, 145, 195, 198, 203, 207, 213], options=[ ('Bet them you will get your own back, and wait.', 'scene:140', {'cunning':'+', 'relationships.tormentor':'risk'}), ('Pretend to submit while you plan.', 'scene:207', {'cunning':'+', 'relationships.superior':'+', 'flags.plotting':'set'}), ('Use the system itself to bury them in work.', 'scene:198', {'cunning':'+', 'relationships.rival':'-', 'flags.vendetta':'set'}), ('Hand them something that will torment them, and never explain.', 'scene:81', {'cunning':'+', 'relationships.rival':'-', 'flags.vendetta':'set'}), ('Let it go.', 'archetype', {'relationships.rival':'+'})]), dict(id='G18', name='It fell into your hands', predicament='By accident you have come into something not meant for you, a secret or an advantage, and you could turn it to your own ends.', actor='person with an accidental advantage', wants='to profit by it', counterpart='those it was meant for', members=[96, 97, 150, 234, 235], options=[ ('Use it to get what you want.', 'scene:97', {'cunning':'+', 'standing':'+', 'flags.used_a_secret':'set'}), ('Keep it to yourself until the moment comes.', 'scene:150', {'cunning':'+', 'money':'+'}), ('Take it, and take your chance.', 'scene:235', {'relationships.beloved':'+', 'standing':'risk', 'flags.stolen':'set'}), ('Hand it back to its owner.', 'filled', {'standing':'+', 'relationships.owner':'+'})]), # ---- meddling, standing by, crossing over ---------------------------------------------------------- dict(id='G19', name='Saving them from themselves', predicament='Someone is heading for ruin without seeing it, and you could step in behind their back and steer them off it.', actor='onlooker', wants='to save someone from their own folly', counterpart='someone who does not want saving', members=[19, 52, 53, 62, 115, 236], options=[ ('Win their trust with kindness, then talk sense into them.', 'scene:62', {'tact':'+', 'relationships.protege':'+'}), ('Take matters into your own hands, by force if need be.', 'scene:115', {'cunning':'+', 'relationships.protege':'risk', 'flags.meddled':'set'}), ('Drop everything and go after them now.', 'scene:19', {'relationships.protege':'+', 'standing':'risk'}), ('Search their things for proof, and risk being the thief yourself.', 'scene:236', {'cunning':'+', 'standing':'risk'}), ('Mind your own business.', 'archetype', {'relationships.protege':'-'})]), dict(id='G20', name='Swallowing it from someone above', predicament='Someone with power over you orders you about like a dog, and everything you want depends on swallowing it.', actor='person held down', wants='to keep their place without losing themselves', counterpart='someone above them', members=[31, 33, 57, 58, 71], options=[ ('Hold your tongue, and do as you are told.', 'scene:31', {'relationships.superior':'+', 'standing':'-'}), ('Fetch and carry, hoping to be noticed.', 'scene:58', {'money':'-', 'relationships.superior':'+', 'standing':'-'}), ('Lose your temper and tell them what you think.', 'scene:33', {'standing':'risk', 'relationships.superior':'-', 'flags.gave_self_away':'set'}), ('Look for somewhere else to go.', 'filled', {'relationships.superior':'-', 'money':'risk'})]), dict(id='G21', name='Seeing it, and saying nothing', predicament='You can see plainly that something is wrong in front of you, and saying so would cost you or someone else more than silence.', actor='onlooker', wants='to do right without making it worse', counterpart='the one doing wrong', members=[48, 136, 138, 219, 232], options=[ ('Keep quiet, so as not to spoil things.', 'scene:48', {'relationships.company':'+', 'flags.kept_silent':'set'}), ('Say nothing, but keep well clear of it.', 'scene:232', {'tact':'+'}), ('Go along with it, afraid of what they could do to you.', 'scene:136', {'relationships.wrongdoer':'+', 'flags.kept_silent':'set'}), ('Bring in someone with the power to stop it.', 'scene:221', {'relationships.authority':'+', 'standing':'risk'}), ('Speak up, whatever it costs.', 'filled', {'standing':'risk', 'relationships.wrongdoer':'-'})]), dict(id='G22', name='Belonging to neither side', predicament='You have crossed into a world your own circle looks down on, and now you belong fully to neither.', actor='person between two worlds', wants='a place of their own', counterpart='both sides', members=[0, 28, 41, 155, 277, 278], options=[ ('Go back to where you came from, and burn the bridge.', 'scene:6', {'relationships.own_circle':'-', 'flags.went_back':'set'}), ('Keep your two lives strictly apart.', 'scene:159', {'cunning':'+', 'standing':'risk', 'flags.double_life':'set'}), ('Live openly on the other side, and ask nobody for anything.', 'scene:278', {'standing':'-', 'relationships.own_circle':'-'}), ('Put what you have learned to use for your own side.', 'scene:28', {'cunning':'+', 'standing':'risk'})]), # ---- love, home, loss ------------------------------------------------------------------------------- dict(id='G23', name='Not free to love them', predicament='You love someone who is not free, or you are not, and every meeting risks a scandal your world will not forgive.', actor='lover', wants='to be near them', counterpart='someone bound elsewhere', members=[3, 157, 159, 256, 260, 261], options=[ ('Meet in secret, and keep it hidden.', 'scene:157', {'relationships.beloved':'+', 'standing':'risk', 'flags.secret_affair':'set'}), ('Enjoy their company and tell yourself it means nothing.', 'scene:3', {'relationships.beloved':'+', 'flags.led_on':'set'}), ('Say goodbye, and mean never to see them again.', 'scene:261', {'relationships.beloved':'-', 'standing':'+'}), ('Tell them plainly how you feel.', 'filled', {'relationships.beloved':'risk'})]), dict(id='G24', name='Devoted to someone who does not care', predicament='You have given your devotion to someone who takes it as their due, and everyone but you can see they do not care.', actor='devoted admirer', wants='to matter to them', counterpart='someone who does not care', members=[164, 227, 233, 265, 268], options=[ ('Pour your best work into a gift for them.', 'scene:266', {'standing':'+', 'relationships.idol':'risk', 'flags.devoted':'set'}), ('Worship from a distance, and ask nothing.', 'scene:165', {'relationships.idol':'+', 'flags.devoted':'set'}), ('Press harder for their attention.', 'scene:227', {'relationships.idol':'-', 'relationships.colleagues':'-'}), ('See them as they are, and walk away.', 'filled', {'relationships.idol':'-', 'standing':'+'})]), dict(id='G25', name='Too late', predicament='You arrive, or understand, at last, and it may already be too late to set it right.', actor='person arriving too late', wants='to put it right', counterpart='someone past helping', members=[20, 43, 89, 194, 270], options=[ ('Race there anyway, as fast as you can.', 'scene:20', {'relationships.lost_one':'+', 'money':'-'}), ('Offer everything you have, though they may no longer need it.', 'scene:43', {'money':'-', 'relationships.lost_one':'risk'}), ('Ask for help now, though you should have asked long ago.', 'scene:270', {'relationships.neighbours':'+', 'standing':'-'}), ('Laugh at the reward that came too late, and walk away.', 'scene:194', {'standing':'-', 'flags.walked_out':'set'})]), dict(id='G26', name='An omen meant for you', predicament='Something uncanny seems to be speaking to you directly, and the sensible explanation may not be the true one.', actor='person given a sign', wants='to know what to do', counterpart='whatever sent it', members=[129, 231, 238, 272, 273], options=[ ('Obey it, whatever it costs.', 'scene:274', {'standing':'risk', 'flags.followed_sign':'set'}), ('Pay whatever it asks.', 'scene:134', {'money':'-', 'flags.followed_sign':'set'}), ('Laugh it off as a story.', 'scene:234', {'standing':'+'}), ('Send for someone who knows how such things are done.', 'scene:129', {'cunning':'+', 'relationships.adviser':'+'}), ('Pass it on quietly where it can do no harm.', 'scene:237', {'flags.rid_of_it':'set'})]), dict(id='G27', name='Panic in the dark', predicament='Something uncanny has come at you out of the dark, and one person\'s fright could carry everyone with it.', actor='frightened person', wants='to keep their head', counterpart='whatever is out there', members=[49, 131, 132, 133, 210, 211], options=[ ('Keep still and watch until you see how it is done.', 'scene:133', {'cunning':'+'}), ('Run with everyone else.', 'scene:211', {'standing':'-', 'relationships.company':'+'}), ('Walk up and lay your hands on it.', 'scene:213', {'standing':'+', 'flags.faced_it':'set'}), ('Huddle together and wait for the light.', 'scene:49', {'relationships.company':'+'})]), dict(id='G28', name='A marriage gone cold', predicament='The one you married has stopped seeing you except to mock or ignore you, and everyone around you has noticed.', actor='neglected spouse', wants='to be seen again', counterpart='their spouse', members=[8, 9, 88, 217, 218], options=[ ('Keep your own counsel, and plan how to win them back.', 'scene:10', {'tact':'+', 'relationships.spouse':'+'}), ('Bear it with a smile in front of guests.', 'scene:219', {'relationships.spouse':'-', 'standing':'-'}), ('Pour your love into your children instead.', 'scene:218', {'relationships.children':'+', 'relationships.spouse':'-'}), ('Tell them plainly what it is doing to you.', 'filled', {'relationships.spouse':'risk'})]), dict(id='G29', name='The habit that is taking everything', predicament='A private habit is slowly taking your work, your money and your people, and you keep promising yourself you will stop.', actor='person in the grip of a habit', wants='to stop, or to stop caring', counterpart='their own habit', members=[165, 242, 245, 280, 281], options=[ ('Fight it alone, week by week.', 'scene:165', {'standing':'+', 'flags.fighting_habit':'set'}), ('Swear an oath, and never drink alone again.', 'scene:167', {'standing':'+', 'relationships.friends':'+'}), ('Let someone else take charge of your money.', 'scene:243', {'money':'-', 'relationships.supplier':'+'}), ('Give in, and stop caring.', 'scene:281', {'standing':'-', 'money':'-', 'flags.given_up':'set'})]), ] # Protagonist standing by story, for stage assignment (DESIGN.md "Stages"). Per story, not per # scene: a coarse first cut, and the one place this grouping uses a judgement not in the text. STANDING = {0:'low', 1:'middle', 2:'low', 3:'middle', 4:'low', 5:'middle', 6:'low', 7:'middle', 8:'low', 9:'high', 10:'middle', 11:'low', 12:'low', 13:'high', 14:'middle', 15:'low', 16:'middle', 17:'low', 18:'middle', 19:'middle', 20:'middle', 21:'middle', 22:'high', 23:'low', 24:'low', 25:'middle', 26:'middle', 27:'low', 28:'middle', 29:'low', 30:'middle', 31:'low', 32:'high', 33:'middle', 34:'low'} # Subalterns, first-post juniors, a signaller, an orphan, an addict and a loafer rank low; officials # of some years' standing, their wives and the narrator middle; a colonel's household (9), the # viceroy's circle (13), the supreme council (22) and a senior department's indispensable expert (32) # high. Story 9 is judged by the colonel and his wife, who bear its consequences, not by the subaltern # whose watch starts it. Story 25 is judged middle because its scenes alternate between the colonel # and the subaltern who defies him.