"""Hand-built reference grouping of the Keefe 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 23 stories, and no story supplies more than half a group's members. Story 6 (the world tour, 146 scenes) is capped like any other. 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 The narrator is unreliable, so a 'scene:N' option is what he actually did, not what he claims he did; and each group carries at least one move a wiser person would make, marked 'filled' where nobody in the book makes it. `moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never chooses a number. Skill labels proposed for this corpus: savvy (seeing through a joke, a con or a flatterer, and knowing your own worth), discipline (doing what the work demands -- training, sobriety, turning up -- whatever you feel like). Relationship roles are generic and the same in both halves of the book: `boss` is the manager or owner in baseball and the captain or sergeant in the army; `colleagues` are teammates or comrades. """ G = [ # ---- pay, position and the boss --------------------------------------------------------------------- dict(id='G01', name='Asking for more money', predicament='You are sure you are worth far more than you are paid, and it is time to name a figure to the person who pays you.', actor='employee', wants='more pay', counterpart='the one who pays them', members=[2, 3, 4, 61, 63, 91, 92, 110, 112, 113, 150, 751, 761, 764, 766, 768, 769, 770, 771, 772, 775, 812, 829, 830, 839], options=[ ('Name a big figure and swear you will not sign for less.', 'scene:3', {'money':'risk', 'relationships.boss':'-', 'flags.held_out':'set'}), ('Sign for what they offer, and call it a win.', 'scene:113', {'money':'-', 'relationships.boss':'+'}), ('Offer to earn it: a raise if you deliver on one test.', 'scene:830', {'money':'risk', 'discipline':'+', 'relationships.boss':'+'}), ('Try to reopen a deal you have already signed.', 'scene:91', {'relationships.boss':'-', 'standing':'-'}), ('Find out what others like you are paid, and ask for that.', 'filled', {'savvy':'+', 'money':'+', 'relationships.boss':'risk'})]), dict(id='G02', name='Threatening to leave for a rival employer', predicament='You are unhappy where you are and tell yourself a rival would snap you up, though you are not sure you are free to go or that they want you.', actor='discontented employee', wants='to be wanted, or better paid', counterpart='their employer and the rival', members=[93, 94, 95, 104, 107, 108, 234, 280, 375, 380, 390, 391, 392, 393, 402, 403, 404, 426, 755, 759, 760, 773, 774, 802, 878, 879, 890, 891, 892, 893, 900, 902, 906, 907, 908, 909], options=[ ('Tell the boss you are leaving for the rival.', 'scene:392', {'relationships.boss':'-', 'standing':'risk', 'flags.threatened_to_leave':'set'}), ('Sound out the rival quietly before you say a word.', 'scene:891', {'savvy':'+', 'relationships.rival_employer':'risk'}), ('Walk out now and wait to be begged back.', 'scene:906', {'money':'-', 'relationships.boss':'-', 'flags.walked_out':'set'}), ('Stay, and tell everyone it was your own choice.', 'scene:404', {'relationships.boss':'+', 'standing':'-'}), ('Take the grievance to the boss plainly, with no threat.', 'filled', {'relationships.boss':'+', 'savvy':'+'})]), dict(id='G03', name='Sent down, or left on the bench', predicament='You have been sent down to a lesser post, or kept out of the real work, and are sure it is a mistake or a slight.', actor='demoted worker', wants='their place back', counterpart='the one who sent them down', members=[19, 22, 30, 31, 32, 100, 115, 116, 117, 122, 128, 260, 334, 410, 438, 507, 522, 533, 567, 880], options=[ ('Go where you are sent and work your way back.', 'scene:31', {'discipline':'+', 'standing':'-', 'relationships.boss':'+'}), ('Refuse to report.', 'scene:30', {'standing':'risk', 'relationships.boss':'-', 'money':'-'}), ('Tell yourself it is really a sign of their confidence.', 'scene:122', {'standing':'-', 'flags.in_denial':'set'}), ('Ask the boss plainly what you must do to get back.', 'scene:128', {'relationships.boss':'+', 'savvy':'+'}), ('Scheme to be picked up by someone else.', 'scene:32', {'savvy':'+', 'relationships.boss':'-'})]), dict(id='G04', name='A boss who manages by mockery', predicament='The person in charge of you keeps making jokes at your expense, and you cannot tell, or will not see, whether it is praise or contempt.', actor='subordinate', wants='the boss\'s regard', counterpart='a boss who mocks', members=[6, 10, 13, 14, 17, 40, 90, 149, 151, 192, 193, 222, 242, 339, 409, 763, 777, 782, 792, 803], options=[ ('Take it as praise.', 'scene:149', {'relationships.boss':'+', 'savvy':'-'}), ('Answer back in kind, in front of everyone.', 'scene:40', {'standing':'risk', 'relationships.boss':'-'}), ('Laugh along, and take the point behind the joke.', 'filled', {'savvy':'+', 'discipline':'+', 'relationships.boss':'+'}), ('Swear to yourself you will hit him next time.', 'scene:14', {'relationships.boss':'-', 'flags.grudge':'set'})]), dict(id='G05', name='Whose fault was it?', predicament='You have failed in front of everyone, and there are plenty of other people and things you could put it down to.', actor='person who failed', wants='to keep their good name', counterpart='colleagues and onlookers', members=[26, 29, 53, 56, 132, 201, 240, 265, 269, 340, 383, 384, 385, 386, 423, 425, 517, 518, 617, 675, 676, 795, 817, 864, 877, 889], options=[ ('Blame the conditions, your body and your teammates.', 'scene:26', {'relationships.colleagues':'-', 'standing':'-'}), ('Write home a version where it was not your fault.', 'scene:29', {'relationships.friend':'+', 'flags.tall_tale':'set'}), ('Own the mistake to the people who saw it.', 'filled', {'standing':'+', 'relationships.colleagues':'+'}), ('Say nothing, and work on what went wrong.', 'archetype', {'discipline':'+'})]), dict(id='G06', name='A step up goes to your head', predicament='You have been raised a little above the people you worked beside, and it is tempting to act as if you had been raised a lot.', actor='newly favoured worker', wants='to be respected in the new place', counterpart='former equals', members=[12, 20, 38, 39, 476, 485, 486, 487, 489, 495, 530, 788, 789, 883], options=[ ('Hold yourself apart from your old friends.', 'scene:495', {'standing':'+', 'relationships.colleagues':'-'}), ('Throw your weight about with the one who answers back.', 'scene:530', {'relationships.colleagues':'-', 'standing':'risk'}), ('Ease off, now that your place is safe.', 'scene:789', {'discipline':'-', 'relationships.boss':'-'}), ('Keep working exactly as before.', 'filled', {'discipline':'+', 'relationships.colleagues':'+'}), ('Give the credit to the one who taught you.', 'filled', {'relationships.boss':'+', 'savvy':'+'})]), dict(id='G07', name='Called to account for a lapse', predicament='Someone above you has you in front of them over something you really did, and what happens next depends on how you answer.', actor='person in trouble', wants='to get off lightly', counterpart='a superior sitting in judgement', members=[89, 111, 129, 135, 136, 506, 564, 565, 566, 591, 847, 887, 888, 897], options=[ ('Tell a flimsy story.', 'scene:887', {'standing':'risk', 'relationships.boss':'-'}), ('Explain what really happened, even though it makes you look a fool.', 'scene:565', {'standing':'-', 'relationships.boss':'+'}), ('Protest that you are being treated unfairly.', 'scene:129', {'relationships.boss':'-', 'money':'-'}), ('Take the penalty and promise to change.', 'filled', {'money':'-', 'relationships.boss':'+', 'discipline':'+'}), ('Say it was what you wanted all along.', 'scene:567', {'standing':'-', 'flags.saved_face':'set'})]), dict(id='G08', name='Sure you know better than the boss', predicament='The person in charge has made a call you are sure is wrong, and you are the one who has to live with it.', actor='subordinate', wants='to be proved right', counterpart='the one in charge', members=[24, 45, 266, 479, 618, 635, 636, 637, 649, 650, 716, 808, 809, 881], options=[ ('Tell the boss to their face that they are wrong.', 'scene:24', {'relationships.boss':'-', 'standing':'risk'}), ('Do it your way, against orders.', 'scene:45', {'relationships.boss':'-', 'standing':'risk', 'flags.defied_orders':'set'}), ('Send your advice up in writing.', 'scene:618', {'standing':'risk', 'savvy':'-'}), ('Do as you are told, and say your piece afterwards.', 'filled', {'relationships.boss':'+', 'savvy':'+'})]), dict(id='G09', name='The boss takes a hand in your private life', predicament='The person who holds your job has decided your private life is hurting your work, and is taking it in hand, for your good or theirs.', actor='employee', wants='to live as they please', counterpart='a boss who intervenes', members=[11, 35, 48, 49, 118, 121, 124, 173, 798, 805, 806, 815, 818, 837, 838, 884], options=[ ('Tell them to mind their own business.', 'scene:35', {'relationships.boss':'-', 'standing':'risk'}), ('Do as they say, and take the reward.', 'scene:818', {'relationships.boss':'+', 'money':'+', 'discipline':'+'}), ('Agree, then sneak off anyway.', 'scene:124', {'discipline':'-', 'relationships.boss':'risk'}), ('Set your own conditions before you comply.', 'scene:838', {'relationships.boss':'-', 'relationships.spouse':'-'})]), dict(id='G10', name='Counting on who you used to be', predicament='You expect your past record to open doors, and the people who could open them are not impressed.', actor='former star', wants='to be taken on their own terms', counterpart='people with work to give', members=[443, 458, 738, 747, 749, 750, 754, 895], options=[ ('Wait for them to come to you.', 'scene:750', {'money':'-', 'standing':'risk'}), ('Remind them of everything you have done.', 'scene:749', {'standing':'-', 'relationships.boss':'-'}), ('Take the modest opening and prove yourself again.', 'scene:748', {'money':'+', 'standing':'-', 'discipline':'+'}), ('Ask plainly what they can offer you now.', 'filled', {'savvy':'+'})]), dict(id='G11', name='The big occasion, and you are not ready', predicament='The moment you have been waiting for has arrived, and your mind, your body or your preparation is somewhere else.', actor='person given a big chance', wants='to shine', counterpart='the watching crowd and the boss', members=[25, 27, 28, 50, 52, 168, 169, 170, 172, 632, 833, 835, 886, 904, 905], options=[ ('Go out and give it everything you have.', 'scene:52', {'standing':'risk', 'discipline':'+'}), ('Ask to be taken out.', 'scene:171', {'relationships.boss':'-', 'standing':'-'}), ('Let what is on your mind take over.', 'scene:834', {'standing':'-', 'relationships.spouse':'risk'}), ('Prepare properly the day before.', 'filled', {'discipline':'+', 'relationships.boss':'+'})]), dict(id='G12', name='A personal score in the middle of the work', predicament='Someone you have a private quarrel with is right there in the work, and you could settle it at your side\'s expense.', actor='worker with a grudge', wants='to get even', counterpart='a rival', members=[41, 131, 133, 134, 137, 139, 295, 865, 867, 894], options=[ ('Settle it now, whatever it costs the side.', 'scene:134', {'relationships.rival':'-', 'relationships.boss':'-', 'money':'-', 'flags.grudge':'set'}), ('Beat them by doing the job well.', 'scene:139', {'standing':'+', 'relationships.boss':'+'}), ('Back down, and call it the clever thing to do.', 'scene:866', {'standing':'-'}), ('Put your teammates first, whatever you feel.', 'scene:894', {'relationships.colleagues':'+', 'discipline':'+'})]), dict(id='G13', name='A drink against the rules', predicament='A drink is on offer where drinking is forbidden or will cost you tomorrow, and you are sure nobody will notice.', actor='worker told to stay sober', wants='a drink', counterpart='whoever enforces the rule', members=[42, 85, 444, 445, 578, 605, 813, 814, 836, 882, 885, 903], options=[ ('Have one; nobody will notice.', 'scene:885', {'discipline':'-', 'relationships.boss':'risk'}), ('Drink to drown it.', 'scene:605', {'discipline':'-', 'standing':'-', 'flags.drinking':'set'}), ('Blame whatever you ate.', 'scene:903', {'standing':'-', 'savvy':'-'}), ('Turn it down, and say why.', 'filled', {'discipline':'+', 'relationships.colleagues':'-'})]), # ---- duty, danger and courage ---------------------------------------------------------------------- dict(id='G14', name='Looking for a way out of what everyone must do', predicament='Everyone in your position has to face a duty, and you are hunting for a reason you should be excused.', actor='person with a duty', wants='to be excused', counterpart='the ones who decide', members=[7, 154, 420, 429, 431, 434, 452, 700], options=[ ('Claim an ailment.', 'scene:431', {'discipline':'-', 'standing':'risk'}), ('Plead your family and your employer.', 'scene:429', {'relationships.family':'+', 'standing':'-'}), ('Rearrange things so the excuse becomes true.', 'scene:434', {'savvy':'+', 'relationships.spouse':'-', 'flags.gamed_the_rules':'set'}), ('Ask to be let off because you are above it.', 'scene:452', {'standing':'-', 'relationships.boss':'-'}), ('Do it, like everyone else.', 'archetype', {'discipline':'+', 'relationships.colleagues':'+'})]), dict(id='G15', name='Fear passed off as something nobler', predicament='You are afraid of what you are being asked to face, and a more respectable reason for avoiding it is close at hand.', actor='frightened person', wants='to stay safe and keep their pride', counterpart='whoever expects them to go', members=[120, 209, 464, 466, 467, 502, 505, 620, 624, 627, 651, 667, 695, 708, 816, 866], options=[ ('Give a noble reason for staying out of it.', 'scene:624', {'standing':'risk', 'flags.fear_as_duty':'set'}), ('Back down, and call it restraint.', 'scene:120', {'standing':'-', 'flags.fear_as_duty':'set', 'savvy':'-'}), ('Stay back quietly and let others go.', 'archetype', {'relationships.colleagues':'-'}), ('Admit you are afraid, and go anyway.', 'filled', {'discipline':'+', 'standing':'+'})]), dict(id='G16', name='Talking brave, and being taken at your word', predicament='You have talked loudly about how brave you would be, and now someone is ready to take you up on it.', actor='boaster', wants='to be thought brave without the risk', counterpart='those who heard the boast', members=[51, 414, 504, 544, 677, 699, 709, 733, 849], options=[ ('Volunteer, now that you have been called on it.', 'scene:709', {'standing':'+', 'relationships.colleagues':'+', 'flags.volunteered':'set'}), ('Keep talking brave and hope nobody takes you up.', 'scene:544', {'standing':'risk'}), ('Say it is the others who are really afraid.', 'scene:677', {'relationships.colleagues':'-'}), ('Say plainly what you will and will not do.', 'filled', {'savvy':'+', 'standing':'-'})]), dict(id='G17', name='Sure you are going to your death', predicament='You have convinced yourself that you will not come back from what lies ahead, and want to set things in order and be remembered well.', actor='person expecting to die', wants='a good farewell', counterpart='the people they leave behind', members=[210, 212, 500, 540, 558, 559, 686, 730], options=[ ('Write a grand farewell.', 'scene:500', {'relationships.family':'+', 'standing':'risk'}), ('Settle your affairs with your oldest friend.', 'scene:212', {'relationships.friend':'+'}), ('Swear you will stay at your post to the last.', 'scene:559', {'standing':'+', 'discipline':'+'}), ('Find out how real the danger is before you say goodbye.', 'filled', {'savvy':'+'})]), dict(id='G18', name='Waiting, with nothing to do', predicament='You were sent to face something, and instead there is only waiting, rain and routine, and the waiting is wearing you down.', actor='person kept waiting', wants='something to happen', counterpart='those who keep them waiting', members=[367, 592, 608, 647, 648, 680, 685, 693, 694, 715, 722, 780], options=[ ('Wish for trouble, anything to break it.', 'scene:694', {'discipline':'-'}), ('Grumble at those above for wasting you.', 'scene:722', {'relationships.boss':'-'}), ('Tell yourself it will never come your way.', 'scene:648', {'savvy':'-'}), ('Keep yourself sharp for when it comes.', 'filled', {'discipline':'+'})]), dict(id='G19', name='Hardship you think is beneath you', predicament='You are used to better, and now you are fed, housed and moved about like everyone else, which you feel you do not deserve.', actor='person used to comfort', wants='the treatment they are used to', counterpart='the people sharing the hardship', members=[244, 446, 547, 572, 573, 574, 607, 679, 691, 692], options=[ ('Complain that you deserve better.', 'scene:572', {'relationships.colleagues':'-', 'standing':'-'}), ('Say others have an easy ride.', 'scene:607', {'relationships.colleagues':'-'}), ('Make the best of it with the others.', 'filled', {'relationships.colleagues':'+', 'discipline':'+'})]), # ---- newcomers, old hands and colleagues --------------------------------------------------------------- dict(id='G20', name='New, and sure you are already the best', predicament='You are new to an outfit of old hands, have seen nothing like it before, and are sure you are already better than all of them.', actor='newcomer', wants='to be recognised at once', counterpart='the old hands', members=[0, 1, 5, 8, 9, 441, 449, 450, 451, 546, 575, 712, 796], options=[ ('Go at it full force to impress them.', 'scene:8', {'relationships.colleagues':'-', 'standing':'risk'}), ('Tell them how good you are.', 'scene:449', {'standing':'-', 'relationships.colleagues':'-'}), ('Sneer at the rough company you have been thrown in with.', 'scene:441', {'relationships.colleagues':'-'}), ('Take the old hands\' advice.', 'filled', {'relationships.colleagues':'+', 'discipline':'+'}), ('Keep quiet and watch how it is done.', 'archetype', {'savvy':'+'})]), dict(id='G21', name='A tall tale of danger from the old hands', predicament='Colleagues who know more than you describe a terrible danger ahead, and you cannot tell whether it is true or a joke at your expense.', actor='newcomer', wants='to be safe without being fooled', counterpart='jokers who know the ropes', members=[207, 208, 219, 250, 263, 309, 312, 317, 323, 337, 453, 456, 463, 465, 494, 497, 499, 501, 503, 556, 557, 668, 723], options=[ ('Believe it and take every precaution.', 'scene:310', {'savvy':'-', 'standing':'-'}), ('Hide until the danger has passed.', 'scene:320', {'standing':'-', 'flags.hid':'set'}), ('Check the story with someone who is not in on it.', 'filled', {'savvy':'+'}), ('Laugh it off in front of them.', 'archetype', {'standing':'+', 'relationships.jokers':'+'})]), dict(id='G22', name='A flattering prospect that may be a joke', predicament='Out of nowhere comes the recognition you always felt you deserved, an offer or a summons or an admirer, and the people who brought it are grinning.', actor='person who feels overlooked', wants='the recognition', counterpart='colleagues who may be pranking them', members=[225, 275, 376, 377, 378, 619, 621, 622, 623, 631, 658, 663, 683, 689, 706], options=[ ('Take it at face value and act on it at once.', 'scene:379', {'money':'-', 'savvy':'-', 'flags.fooled':'set'}), ('Show it off to everyone.', 'scene:623', {'standing':'risk'}), ('Check it with the person it is supposed to come from.', 'scene:402', {'savvy':'+', 'money':'-'}), ('Ask yourself who would be laughing if it were false.', 'filled', {'savvy':'+', 'relationships.jokers':'-'})]), dict(id='G23', name='Saving face after being made a fool of', predicament='You have been fooled, rejected or beaten, everyone knows it, and you must decide what story to tell about it.', actor='person made a fool of', wants='to keep their pride', counterpart='the people who know what happened', members=[33, 57, 315, 325, 326, 327, 405, 406, 471, 496, 563, 568, 569, 570, 669, 673, 711, 717, 758, 804, 875, 910, 911], options=[ ('Say you saw through it all along.', 'scene:471', {'standing':'risk', 'relationships.jokers':'-', 'flags.saved_face':'set'}), ('Say you never wanted it anyway.', 'scene:673', {'standing':'-', 'flags.saved_face':'set'}), ('Blame the one who talked you into it.', 'scene:676', {'relationships.colleagues':'-'}), ('Laugh at yourself along with them.', 'filled', {'standing':'+', 'relationships.colleagues':'+', 'savvy':'+'}), ('Tell your friend the truth, at least.', 'scene:327', {'relationships.friend':'+'})]), dict(id='G24', name='Made a public laughing-stock', predicament='Colleagues have made you the joke of the whole company, in public, and everyone is waiting to see how you take it.', actor='butt of the joke', wants='to have the last laugh', counterpart='the pranksters and the crowd', members=[18, 277, 278, 279, 346, 472, 475, 603, 604, 606, 678, 876], options=[ ('Storm off and vow to quit.', 'scene:279', {'relationships.colleagues':'-', 'standing':'-'}), ('Vow to get even.', 'scene:606', {'relationships.jokers':'-', 'flags.vowed_revenge':'set'}), ('Insist it was never meant seriously.', 'scene:604', {'standing':'-', 'savvy':'-'}), ('Pay them back in the work itself.', 'scene:295', {'standing':'risk', 'relationships.jokers':'-'}), ('Laugh along and let it pass.', 'archetype', {'relationships.colleagues':'+', 'standing':'+'})]), dict(id='G25', name='A cruel joke on someone who cannot take it', predicament='Your colleagues are playing a joke on someone weaker that is turning cruel or dangerous, and you are in on it or watching.', actor='bystander or prankster', wants='the fun without the blame', counterpart='the victim and the other jokers', members=[462, 644, 645, 646, 714, 721, 724, 729], options=[ ('Join in; it is only fun.', 'scene:645', {'relationships.colleagues':'+', 'relationships.victim':'-'}), ('Say it is none of your business.', 'scene:724', {'relationships.victim':'-', 'flags.looked_away':'set'}), ('Condemn it loudly, and do nothing.', 'scene:721', {'standing':'risk'}), ('Tip the victim off quietly.', 'scene:714', {'relationships.victim':'+', 'relationships.colleagues':'-'}), ('Stop it before it goes too far.', 'filled', {'relationships.victim':'+', 'standing':'+', 'relationships.colleagues':'-'})]), dict(id='G26', name='Needled by a colleague', predicament='A colleague keeps making digs at you in front of the others, and you want to make them stop.', actor='person being needled', wants='to make them stop', counterpart='a colleague with a sharp tongue', members=[16, 138, 345, 347, 474, 610, 672], options=[ ('Threaten to knock them down.', 'scene:345', {'relationships.colleague':'-', 'standing':'risk'}), ('Answer with a joke of your own.', 'scene:138', {'standing':'+'}), ('Take it to someone above.', 'filled', {'relationships.boss':'risk', 'relationships.colleague':'-'}), ('Let it roll off you.', 'archetype', {'discipline':'+', 'relationships.colleague':'+'})]), dict(id='G27', name='Sure a colleague is up to something', predicament='You have decided a colleague is plotting against you or betraying everyone, and you have nothing to go on but their manner.', actor='suspicious person', wants='to expose them', counterpart='a colleague under suspicion', members=[144, 360, 454, 455, 461, 653, 654, 655, 662, 670], options=[ ('Watch them and build a case.', 'scene:656', {'relationships.colleague':'-', 'flags.suspicion':'set'}), ('Accuse them before the one in charge.', 'scene:670', {'relationships.boss':'risk', 'relationships.colleague':'-', 'standing':'risk'}), ('Ask them straight out.', 'scene:660', {'relationships.colleague':'risk', 'savvy':'+'}), ('Let it go: you have no real evidence.', 'filled', {'savvy':'+', 'relationships.colleague':'+'})]), dict(id='G28', name='Boasting to people who know better', predicament='You have a story about your own exploits to tell, and the people listening were there, or know how it really went.', actor='storyteller', wants='to be admired', counterpart='colleagues who know better', members=[601, 602, 616, 753, 778, 781, 785, 797, 811, 821, 823, 859], options=[ ('Tell it again, bigger.', 'scene:601', {'standing':'risk', 'relationships.colleagues':'-'}), ('Snap that you were the one who was actually there.', 'scene:778', {'relationships.colleagues':'-'}), ('Mock the other braggart, and keep telling yours.', 'scene:811', {'savvy':'-', 'relationships.colleagues':'risk'}), ('Let someone else tell it.', 'filled', {'relationships.colleagues':'+'})]), dict(id='G29', name='A new skill that looks easy', predicament='You are faced with something you have never done, and you are sure your talent at your own work will carry you straight through it.', actor='confident novice', wants='to master it at once', counterpart='teachers and people who know it', members=[296, 297, 298, 299, 300, 473, 480, 488, 493, 512, 515, 516, 625, 746], options=[ ('Bet that you can do it first time.', 'scene:297', {'money':'risk', 'standing':'risk'}), ('Lie about your experience to get in.', 'scene:512', {'standing':'risk', 'flags.lied':'set'}), ('Correct the instructor.', 'scene:488', {'relationships.boss':'-'}), ('Quit, and say it was beneath you.', 'scene:493', {'standing':'-'}), ('Take the lessons and the practice.', 'filled', {'discipline':'+'})]), dict(id='G30', name='You swore you were above it', predicament='You said loudly that you would never stoop to something, and now you want to do it after all.', actor='proud person', wants='the thing without the loss of face', counterpart='those who heard the vow', members=[71, 72, 582, 583, 584, 613, 614, 615, 744, 745], options=[ ('Swear you will never do it.', 'scene:71', {'standing':'+', 'money':'risk'}), ('Do it, and say you were misunderstood into it.', 'scene:615', {'standing':'-'}), ('Say you were only stalling.', 'scene:582', {'standing':'risk', 'savvy':'-'}), ('Change your mind openly.', 'filled', {'savvy':'+'})]), dict(id='G31', name='In the spotlight, sure you are the hit', predicament='You have been given a stage in front of important people, and you are sure the laughter and applause are for you.', actor='performer', wants='to be admired', counterpart='an audience that may be laughing', members=[196, 226, 228, 245, 306, 381, 388, 596, 600], options=[ ('Give it everything, and bask in the applause.', 'scene:306', {'standing':'risk'}), ('Use the platform to excuse your failures.', 'scene:245', {'standing':'-'}), ('Say you are too busy, then agree.', 'scene:596', {'standing':'risk', 'savvy':'-'}), ('Keep it short and thank your hosts.', 'filled', {'standing':'+'})]), # ---- money ---------------------------------------------------------------------------------------- dict(id='G32', name='A bargain that is a swindle', predicament='A rare bargain or a sure tip has come your way through someone friendly, and it must be decided now.', actor='buyer', wants='something for nothing', counterpart='a friendly seller or tipster', members=[350, 351, 353, 354, 355, 356, 361, 362, 713, 720, 852, 860, 869, 870, 871, 872, 874], options=[ ('Snap it up before it is gone, with borrowed money if need be.', 'scene:355', {'money':'-', 'savvy':'-'}), ('Haggle a little, then buy.', 'scene:356', {'money':'-'}), ('Bet everything on it to shut the doubters up.', 'scene:872', {'money':'risk', 'relationships.colleagues':'risk'}), ('Pass the tip on to a friend.', 'scene:871', {'relationships.friend':'risk'}), ('Walk away from anything that must be decided tonight.', 'filled', {'savvy':'+'})]), dict(id='G33', name='Expected to pay, and you hate paying', predicament='Everyone around you tips, treats and gives presents as a matter of course, and you begrudge every cent.', actor='tight-fisted person', wants='to keep their money', counterpart='people who expect to be paid', members=[21, 43, 47, 64, 157, 237, 247, 256, 330, 333], options=[ ('Pay the least you can.', 'scene:237', {'money':'+', 'standing':'-'}), ('Refuse, and call it graft.', 'scene:333', {'money':'+', 'relationships.colleagues':'-'}), ('Give something that cost you nothing.', 'scene:247', {'relationships.spouse':'-'}), ('Pay what is customary and forget it.', 'filled', {'money':'-', 'standing':'+'})]), dict(id='G34', name='Leaning on the friend back home', predicament='There is one old friend who always comes through, and you need them again, though you have given little back.', actor='person in a fix', wants='help, again', counterpart='a loyal old friend', members=[73, 77, 98, 109, 125, 183, 332, 561, 579, 898], options=[ ('Ask for another loan.', 'scene:98', {'money':'+', 'relationships.friend':'-'}), ('Blame the friend when their help falls short.', 'scene:77', {'relationships.friend':'-', 'standing':'-'}), ('Send them something that cost you nothing.', 'scene:332', {'relationships.friend':'risk'}), ('Repay what you owe before spending on yourself.', 'scene:140', {'money':'-', 'relationships.friend':'+'})]), # ---- home ------------------------------------------------------------------------------------------ dict(id='G35', name='Whose money is it at home?', predicament='Your spouse is spending money you earned on things you think you cannot afford, and wants more.', actor='earner', wants='to keep control of the money', counterpart='a spouse with other ideas', members=[66, 70, 74, 75, 80, 81, 82, 162, 290, 291, 411, 756, 757, 842, 861, 863], options=[ ('Hand it over to keep the peace.', 'scene:291', {'money':'-', 'relationships.spouse':'+'}), ('Refuse flatly.', 'scene:162', {'money':'+', 'relationships.spouse':'-'}), ('Spend more yourself to keep up with the relatives.', 'scene:81', {'money':'-', 'relationships.inlaws':'-'}), ('Refuse them an equal share in what you buy together.', 'scene:863', {'relationships.spouse':'-', 'money':'risk'}), ('Sit down together and agree what you can afford.', 'filled', {'savvy':'+', 'relationships.spouse':'+'})]), dict(id='G36', name='A spouse who earns more', predicament='Your spouse has gone into work of their own and is doing better at it than you are at yours.', actor='spouse who was the earner', wants='to stay the head of the house', counterpart='a spouse who earns more', members=[412, 415, 416, 417, 422, 427, 752, 767, 810, 820, 824, 825, 899, 901], options=[ ('Laugh at the idea that it could work.', 'scene:412', {'relationships.spouse':'-', 'savvy':'-'}), ('Brag about it as if it were your doing.', 'scene:427', {'relationships.spouse':'+', 'standing':'risk'}), ('Push them to give it up and stay home.', 'scene:899', {'relationships.spouse':'-', 'money':'-'}), ('Give your advice, and leave the decision to them.', 'scene:820', {'relationships.spouse':'+', 'savvy':'+'})]), dict(id='G37', name='A quarrel at home: who gives way?', predicament='You and your spouse have fallen out, one of you has walked out or threatened to, and someone has to give way.', actor='spouse', wants='to win, or to have peace', counterpart='their spouse', members=[67, 68, 69, 97, 141, 179, 181, 182, 437, 527, 832], options=[ ('Call their bluff and go out.', 'scene:68', {'relationships.spouse':'-'}), ('Go after them and make it up.', 'scene:69', {'relationships.spouse':'+', 'standing':'-'}), ('Give way when they cry.', 'scene:437', {'relationships.spouse':'+'}), ('Threaten lawyers.', 'scene:126', {'relationships.spouse':'-', 'money':'-'}), ('Tell your friend you laid down the law.', 'scene:832', {'relationships.friend':'+', 'flags.tall_tale':'set'})]), dict(id='G38', name='Coming home to find them gone', predicament='You come home, perhaps to surprise them, and find nobody there and nobody who can say where they went.', actor='returning spouse', wants='a welcome', counterpart='a family that went on without them', members=[99, 102, 398, 399, 400, 401, 524, 525, 526, 826], options=[ ('Drink alone until they come.', 'scene:526', {'discipline':'-', 'relationships.spouse':'-'}), ('Wait up, and have it out when they come in.', 'scene:527', {'relationships.spouse':'-', 'standing':'+'}), ('Go after them.', 'scene:69', {'relationships.spouse':'+', 'standing':'-'}), ('Let them know next time you are coming.', 'filled', {'relationships.spouse':'+', 'savvy':'+'})]), dict(id='G39', name='Suspecting your spouse', predicament='Something tells you your spouse has a life you do not know about, and you cannot tell if it is innocent.', actor='jealous spouse', wants='the truth, and to be the one who matters', counterpart='their spouse', members=[176, 177, 178, 562, 827, 828, 834], options=[ ('Demand an explanation.', 'scene:828', {'relationships.spouse':'-'}), ('Confront the stranger.', 'scene:834', {'relationships.spouse':'-', 'standing':'risk'}), ('Plan to take the children and go.', 'scene:179', {'relationships.spouse':'-', 'relationships.family':'risk'}), ('Ask calmly, and believe the answer.', 'filled', {'relationships.spouse':'+', 'savvy':'+'})]), dict(id='G40', name='Far away, and no word from home', predicament='You are far from your family and have heard nothing for too long, and you cannot tell if they are ill or just not writing.', actor='person far from home', wants='news of the family', counterpart='a silent family', members=[155, 156, 231, 236, 257, 271, 289, 364, 365, 468, 470, 599], options=[ ('Swear you will go home if no word comes.', 'scene:233', {'standing':'risk', 'relationships.family':'+'}), ('Let the worry wreck your work.', 'scene:155', {'discipline':'-'}), ('Resent their silence.', 'scene:365', {'relationships.spouse':'-'}), ('Pay for a wire, and ask.', 'filled', {'money':'-', 'relationships.family':'+'}), ('Keep your mind on the work and trust they are well.', 'filled', {'discipline':'+'})]), dict(id='G41', name='Work pulls against a promise to your family', predicament='You promised your family you would be with them, and the people you work for want you somewhere else.', actor='worker with a family', wants='to keep both happy', counterpart='the boss and the family', members=[36, 171, 185, 186, 189, 202, 205, 459, 498, 739], options=[ ('Keep your promise and go home.', 'scene:205', {'relationships.family':'+', 'relationships.boss':'-'}), ('Stay a little longer, since they say they need you.', 'scene:186', {'relationships.boss':'+', 'relationships.family':'-'}), ('Leave your post without permission.', 'scene:171', {'relationships.boss':'-', 'money':'risk', 'relationships.family':'+'}), ('Ask your family what they want you to do.', 'filled', {'relationships.family':'+', 'savvy':'+'})]), dict(id='G42', name='Relatives under one roof', predicament='You and relatives you resent are sharing a home, and each side thinks the other is living off it.', actor='householder or guest', wants='their fair share, or the relatives gone', counterpart='resented relatives', members=[83, 84, 86, 96, 126, 140, 160, 161, 180, 197, 199], options=[ ('Accuse them of sponging first.', 'scene:161', {'relationships.inlaws':'-'}), ('Move out, whatever it costs.', 'scene:179', {'money':'-', 'relationships.inlaws':'-', 'relationships.spouse':'+'}), ('Keep them out of a chance you could share.', 'scene:199', {'relationships.inlaws':'-', 'flags.spite':'set'}), ('Take the hand they offer.', 'scene:126', {'relationships.inlaws':'+'}), ('Pay your share and keep the peace.', 'filled', {'money':'-', 'relationships.inlaws':'+', 'relationships.spouse':'+'})]), dict(id='G43', name='Your spouse snubs people you owe', predicament='Your spouse looks down on old friends or humble companions who have been good to you, and you are caught between them.', actor='person between two loyalties', wants='to keep both', counterpart='a snobbish spouse and humbler friends', members=[76, 78, 477, 478, 560], options=[ ('Side with your spouse.', 'scene:78', {'relationships.friend':'-', 'relationships.spouse':'+'}), ('Propose they all travel together anyway.', 'scene:477', {'relationships.spouse':'-', 'relationships.friend':'+'}), ('Look down on the humbler couple yourself.', 'scene:478', {'relationships.friend':'-', 'standing':'+'}), ('Make amends to them yourself.', 'filled', {'relationships.friend':'+', 'money':'-'})]), dict(id='G44', name='A new parent sure they know best', predicament='You have a new child, you are sure you understand it better than anyone, and you are about to act on it.', actor='new parent', wants='to do right by the child', counterpart='the other parent', members=[142, 143, 145, 146, 147, 164, 165, 190, 394, 440, 725], options=[ ('Trust your own judgement over the other parent\'s.', 'scene:147', {'relationships.spouse':'-', 'savvy':'-'}), ('Call in an expert, and another.', 'scene:165', {'money':'-'}), ('Direct everything from far away.', 'scene:725', {'relationships.spouse':'-'}), ('Do as the other parent says.', 'filled', {'relationships.spouse':'+', 'relationships.family':'+'})]), # ---- admirers -------------------------------------------------------------------------------------- dict(id='G45', name='Sure they are smitten with you', predicament='Someone has been pleasant to you, and you are sure they are falling for you.', actor='person who thinks themselves admired', wants='to be adored', counterpart='someone merely polite', members=[270, 305, 374, 510, 521, 587, 588, 589, 593, 633, 690, 707, 740, 783, 787, 841, 845, 846, 851, 853, 854, 862], options=[ ('Nobly keep your distance, to spare them.', 'scene:589', {'relationships.admirer':'-', 'flags.imagined_admirer':'set'}), ('Show off for them.', 'scene:845', {'money':'-', 'relationships.spouse':'-'}), ('Muscle in ahead of a friend who is keen on them.', 'scene:587', {'relationships.friend':'-', 'relationships.admirer':'risk'}), ('Take it as ordinary politeness.', 'filled', {'savvy':'+'})]), dict(id='G46', name='Stringing along an admirer while you are not free', predicament='An admirer does not know you are married or promised, it is getting warmer, and every letter makes the truth harder to tell.', actor='person who is not free', wants='the attention without the reckoning', counterpart='an admirer, and a spouse who does not know', members=[44, 46, 54, 509, 514, 519, 520, 523, 528, 529, 534, 536, 594, 595, 597, 598, 630, 640, 684, 697, 698, 705, 790, 793, 794, 799], options=[ ('Keep it going; it is only kindness.', 'scene:514', {'relationships.admirer':'+', 'relationships.spouse':'risk', 'flags.strung_along':'set'}), ('Blame your spouse\'s neglect, and go ahead.', 'scene:640', {'relationships.spouse':'-', 'flags.strung_along':'set'}), ('Agree to meet, meaning to confess in person.', 'scene:536', {'relationships.spouse':'risk', 'standing':'risk'}), ('Stop writing without a word.', 'scene:529', {'relationships.admirer':'-'}), ('Tell them at once that you are not free.', 'filled', {'relationships.admirer':'-', 'relationships.spouse':'+'})]), dict(id='G47', name='Caught with an admirer', predicament='The admirer you have kept from your spouse, or the spouse you have kept from your admirer, is about to find out, in front of you.', actor='person caught out', wants='to get out of it whole', counterpart='the admirer, the spouse, or whoever exposes them', members=[537, 538, 539, 642, 742, 743, 800, 801, 850], options=[ ('Deny who you are.', 'scene:537', {'relationships.admirer':'-', 'standing':'risk'}), ('Claim you were just about to tell them.', 'scene:801', {'standing':'-'}), ('Pay your way out.', 'scene:642', {'money':'-'}), ('Offer your spouse a flattering story.', 'scene:743', {'relationships.spouse':'+', 'savvy':'+'}), ('Own it to your spouse.', 'filled', {'relationships.spouse':'risk', 'standing':'+'})]), ] # 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:'low', 2:'middle', 3:'middle', 4:'middle', 5:'middle', 6:'middle', 7:'middle', 8:'middle', 9:'low', 10:'low', 11:'low', 12:'low', 13:'low', 14:'low', 15:'low', 16:'low', 17:'low', 18:'low', 19:'middle', 20:'middle', 21:'middle', 22:'middle'} # A rookie on trial and a pitcher sent to the minors rank low (0-1); a regular big-league pitcher, # on the world tour and at home in the draft summer, middle (2-8). A draftee private, a corporal # of seven men and a private again rank low (9-17), and so does a wounded veteran out of work (18). # Back as a regular starter he is middle again (19-22), though 22 ends with him traded away. # Nobody ranks high: Keefe never rises above a working pitcher, and the owners and generals above # him are never the protagonist.