Split Deep challenge stakes into success and failure fields

The Deep now states what happens on success and on failure as two
separate fields when calling a Challenge, instead of one free-text
stakes blob. ChallengePanel shows them as " On success" / " On
failure"; the event log lists both.

- Challenge.stakes_success / stakes_failure (+ migration); the old
  single `stakes` column is kept (vestigial) so in-scene rollback
  snapshots taken before the upgrade still deserialize, and ChallengePanel
  falls back to it for any pre-existing challenge.
- create_challenge / route / DeepControlPanel updated; tests adjusted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 09:28:38 -07:00
parent 5a8919d967
commit 39dc07d6b6
8 changed files with 77 additions and 24 deletions

16
TODO.md
View File

@@ -12,7 +12,7 @@
- [x] On the screen after pirat rank up voting, it should display the winner
- [ ] When Deep issues a challenge, stakes should be two fields, success and failure
- [x] When Deep issues a challenge, stakes should be two fields, success and failure
- [ ] Captain should not be autoassigned. That's something the crew has to earn.
@@ -24,6 +24,12 @@
- [ ] In between scenes, there really only needs to be one panel with the roster and voting status. There doesn't need to be a whole extra panel to inform players that the deep will later get to refresh their hands.
## UI Polish
- [ ] **Make card tooltips more graphical** Rather than just being an HTML title attribute, they should be a nicely formatted on-hover UI element. There should also be tooltips in the challenge/obstacle box/resting deep phase card displays (basically, anywhere a card is rendered it should have a tooltip), and these should describe the card, not the event of it being played, since that's covered by the event log.
- [ ] **Make the color of challenges more clear**. Right now there are all sorts of highlights around the challenge box, and it's not clear if red or black is the "good" color to play on it. Also, double check the rulebook about whether the color of the challenge is based on the original card or the latest card played.
## Words Words Words
- [ ] **Example Play formatting.** The Example Play section of the Rules page could use a bit more formatting for legibility. Make diagrams of the card state at each step rather than just a text listing.
@@ -41,14 +47,6 @@
- [ ] **Scene dashboard design refresh.** There should be a column of bubbles/buttons to the left of the obstacle list panel. These represent the crew. You can click a Pi-Rat to pop out their character sheet. If the other player is a Pi-Rat in the scene, there's the "challenge them" UI, which no longer needs the "Challenge whom?" since it's tied to a particular character sheet. Finally, there's the personal objective list. There's also an objectives button (at the top level of the hierarchy) which shows a popup for crew objectives. This entirely replaces the character sheet panel on the current dashboard, as well as the roster at the top of the obstacle list. The captain has a steering wheel emoji next to them. The display should also show current hand size for all players.
- [ ] **Make card tooltips more graphical** Rather than just being an HTML title attribute, they should be a nicely formatted pop-up UI element. There should also be tooltips in the challenge/obstacle box card displays, and these should describe the card, not the event of it being played, since that's covered by the event log.
- [ ] **Add card tooltips to more things**. They need to be in the challenge UI and resting deep phase.
- [ ] **Make the color of challenges more clear**. Right now there are all sorts of highlights around the challenge box, and it's not clear if red or black is the "good" color to play on it. Also, double check the rulebook about whether the color of the challenge is based on the original card or the latest card played.
- [ ] Interaction during a challenge should be promoted to the top of the UI
- [ ] Event log should be a top level panel, not an overlay.