-
Notifications
You must be signed in to change notification settings - Fork 394
Choices Migration Proposal
We have a bunch of different ways to make decisions in our engine, which we lump together into :choices
. This is unwieldy and ugly. Instead, we should pull each of these out into a discrete method of targeting or selection or prompts, and then create sane defaults for each to reduce clutter and noise in the ability definitions. (Note, a lot of this comes from working with the ringteki codebase, so if you work with that, some of this will make a lot of sense.)
The different kinds of choices in Netrunner are:
- Selecting a card in the play area: "Choose a piece of ice"
- Selecting a card in a player's hand or discard: "You may choose 2 cards in your heap"
- Searching for a card in a player's deck: "Search R&D for an asset"
- Choosing between multiple options: "he or she must either take 1 tag or end the run."
- Sequentially choosing between multiple options ("modal"): "Resolve two of the following in any order"
- Spending a variable number of credits: "You and the Runner secretly spend 0 [credits], 1 [credits], or 2 [credits]."
- Choosing a number: "choose a number greater than 0"
- Choosing a card title: "Name a card."
- Paying credits to trigger an optional ability: "If you pay 4 [credits] when..."
- Selecting a card that has been revealed or looked at (but hasn't changed locations): "look at the top X cards of your stack. Add 1 of those cards to the bottom of your stack."
- Rearranging cards: "you may look at the top 5 cards of R&D and arrange them in any order"
The big question becomes, how do we want to make these easier to write and maintain? In my mind, each of these should be a distinct prompt, as they have different needs. Some of these could even been split into multiple sub-types, allowing for useful defaults and lowering confusion.