-
Notifications
You must be signed in to change notification settings - Fork 393
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sub tracking and quick run feature proposal #3638
Comments
I think this looks great. |
I like the idea of adding subroutine counts to ice. I'm less convinced by the rest of the proposals. I think the current panel the runner can open on ice can be expanded to actually trigger the subroutines instead of just printing a statement to the logs. That might be a good start at least. |
The motivation for this is to allow for runs to be made with less Corp interaction, and icebreakers to have auto-break convenience methods. Below, I'll go more in depth on what I want, and give a mockup of the UI I'm imagining.
Currently, the Corp needs to say "yes, I accept that you have broken all subs" for each piece of ice, and
if not, manually select the ones to fire. Ideally, the Corp would only be needed to rez/trigger paid abilities, so a run on a server where all the ice is rezzed should be resolvable entirely by the Runner, with no user interaction needed from the Corp except to rez non-ice cards or trigger paid abilities if necessary.
This breaks down into three sub-goals:
Necessary modifications to game engine
The game needs a method get-subroutines taking the state and a piece of ice as argument and returning a list of subs. Once existing ice have their sub lists updated, this will generally be a simple lookup at the :subroutines key, although some ice (e.g. NEXT Silver) needs to be intelligent about this.
The Corp should get a togglable ability "Always 'No further action' on rezzed ice" which would effectively instantly press 'No further action' if the ice the run arrow is pointing to is rezzed. It would assume the corp takes other rez/paid abilities when appropriate, which should be fine unless the Runner plays too fast.
The Runner should get a button 'Fire unbroken subs' as an alternative to 'Continue'. This would 1) check how many subs were broken and how many exist, spawn a 'which subs were broken' prompt if needed, and then resolve all unbroken subs without needing the Corp to take any action unless the sub requires it (e.g. Miraju). To see what this prompt might look like, see "Unbroken subs prompt UI".
Icebreakers should get 'break all' convenience methods added. These would trigger the icebreaker's break ability as many times as there are subs on the piece of ice. Some breakers (Endless Hunger) can't break all, of course.
Unbroken subs prompt UI example
Let's consider a runner who is encountering a rezzed Archer. The Archer was rezzed before the run, and the Corp has enabled auto-pass, so the Runner does not need to wait for the Corp to press 'no further action' before they break/pass Archer.
The Runner wants to break all subs except the first, but has mistakenly only pressed 'break ice subroutine' twice before pressing "allow unbroken subs to fire". The game defaults to assuming the Runner wants to break the subs in order, but allows the Runner to correct this, and even to mark too many/few subs for firing.
If the runner presses "Done marking broken/unbroken subs" without having marked what the game thinks is the correct number of subs, the game still only fires the ones the Runner says, but grumbles about it to console.
Prompt once the Runner clicks "Allow unbroken subs to fire"
Archer has 4 subs (you broke 2)
Prompt after button 1 is pressed:
Archer has 4 subs (you broke 2, but have selected 1)
Prompt after button 3 is pressed:
Archer has 4 subs (you broke 2)
Prompt after button 4 is pressed:
Archer has 4 subs (you broke 2, but have selected 3)
Once button 5 is pressed, the game would print "The 'Gain 2 credits' subroutine on Archer resolves.", resolve Archer's first sub, then print "Note: the Runner only broke 2 subs, but marked 3 as broken." to console.
Clarifications
Backwards compatibility
If the runner presses 'Continue', the break/fire stepis assumed to have been handled by the players, so they could play the run 100% old-style if they prefer. Subroutines will still be manually firable by the Corp to easily correct mistakes.
"Fire all" fails gently
If the Runner clicks "Fire all", a list of subs is presented to them with a "Is this correct?" dialog before actually firing anything, which will always allow the Runner to go "whoops" if needed.
Encounter effects are still manual
Not 100% sure how this works out with ice like grail/Komainu.
Special cases:
Some effects break a variable number of subs (switchblade, black orchestra, ++), so the game cannot always infer how many subs the player meant to break. For simplicity, I suggest having the game assume the Runner always breaks as many as possible and rely on the Runner to press 'Allow unbroken subs to fire' if they want to.
Gbhali/Kongamato/Endless Hunger all break special types of subs. I suggest ignoring these and having the game treat them as if their effects said "Break ice subroutine".
The text was updated successfully, but these errors were encountered: