// Running out of money. // // There is no game over here and no separate failure mode in the engine — this // is an ordinary event whose conditions happen to be "your money is negative", // carrying enough weight to crowd out an ordinary day. Every route out costs // something other than money, and every one of them leaves you still playing. // // Both events always offer at least one ungated option, so a player with no // skills and no friends is never stuck. export const hardTimes = [ { id: 'rent_bounced', // No stage: rent is due wherever you work, and the branch has to follow // the player up rather than vanishing on promotion. // // Weighted heavily but not overwhelmingly, and on a cooldown: being broke // should colour a run, not replace it. At weight 5000 with no cooldown a // player who could not climb out saw this and almost nothing else, 45 // times in one session. weight: 900, cooldown: 3, requires: [{ path: 'money', op: '<', value: 0 }], description: 'Rent came out and did not clear. The letter uses the word ' + '"unfortunately" four times and encloses a form.', options: [ { id: 'take_loan', label: 'Take the loan the letter suggests.', // They stop lending eventually, which is when the spiral gets real: // past this, the only ways out cost standing rather than interest. requires: [{ path: 'debt', op: '<', value: 2000 }], result: 'The money arrives the same afternoon, which tells you something about ' + 'the rate.', effects: [ { path: 'money', op: 'add', value: 500 }, { path: 'debt', op: 'add', value: 500 }, { path: 'flags.took_loan', op: 'set', value: true }, { path: 'reputation', op: 'add', value: -2 }, { path: 'notable', op: 'push', value: 'Took the loan.' }, ], }, { id: 'ask_trevor', label: 'Ask Trevor for a float.', requires: [{ path: 'relationships.trevor.likes_you', op: '>=', value: 40 }], result: 'He lends it without making a thing of it, and from then on he is a ' + 'man who lent you money.', effects: [ { path: 'money', op: 'add', value: 150 }, { path: 'reputation', op: 'add', value: -3 }, { path: 'relationships.trevor.fears_you', op: 'add', value: -8 }, { path: 'relationships.trevor.wants_to_help_you', op: 'add', value: -5 }, { path: 'notable', op: 'push', value: 'Borrowed money from Trevor.' }, ], }, { id: 'ask_marlene', label: 'Ask Marlene for an advance.', requires: [{ path: 'relationships.marlene.wants_to_help_you', op: '>=', value: 55 }], result: 'She processes it herself and does not put it through the system. ' + 'Neither of you mentions it again.', effects: [ { path: 'money', op: 'add', value: 200 }, { path: 'relationships.marlene.wants_to_help_you', op: 'add', value: -10 }, { path: 'relationships.marlene.likes_you', op: 'add', value: -3 }, ], }, { id: 'extra_shifts', label: 'Take every shift going.', result: 'You do eleven days without one off. The bins stop being individual ' + 'bins after a while.', // Has to be worth more than a week of rent, or it is not a way out of // the hole — it is the hole with extra steps. effects: [ { path: 'money', op: 'add', value: 220 }, { path: 'skills.logistics', op: 'add', value: 2 }, { path: 'reputation', op: 'add', value: -1 }, ], }, ], }, { id: 'debt_collector', // The chance to pay down has to come round often enough to matter; at // weight 25 it appeared six times in 262 turns and debt became a ratchet. weight: 45, cooldown: 4, requires: [{ path: 'debt', op: '>', value: 0 }], description: 'A man from the lender calls the mailroom phone. Marlene answers it. She ' + 'hands it to you without expression and then, notably, without leaving.', options: [ // Both take what is owed up to their size, never more — the same defect // a real Frontier session found at the store, present here unplayed. // Money first, because both effects read `debt` before it moves. See #38. { id: 'pay_chunk', label: 'Pay a real chunk of it down, up to $350.', requires: [{ path: 'money', op: '>=', value: 350 }], result: 'He is audibly disappointed.', effects: [ { path: 'money', op: 'add', value: { from: 'debt', times: -1, cap: 350 } }, { path: 'debt', op: 'add', value: { from: 'debt', times: -1, cap: 350 } }, { path: 'reputation', op: 'add', value: 1 }, ], }, { id: 'pay_minimum', label: 'Pay what you can.', requires: [{ path: 'money', op: '>=', value: 60 }], result: 'Up to fifty against the loan, and ten for the privilege of the call.', effects: [ { path: 'money', op: 'add', value: -10 }, { path: 'money', op: 'add', value: { from: 'debt', times: -1, cap: 50 } }, { path: 'debt', op: 'add', value: { from: 'debt', times: -1, cap: 50 } }, ], }, { id: 'stall', label: 'Tell him next month.', result: 'He says next month. Marlene goes back to her desk.', effects: [ { path: 'debt', op: 'add', value: 25 }, { path: 'reputation', op: 'add', value: -3 }, { path: 'relationships.marlene.likes_you', op: 'add', value: -4 }, ], }, ], }, ]; export default hardTimes;