feat: tell shoppers what a released Pokémon keeps - #291
Open
LuceteYang wants to merge 1 commit into
Open
LuceteYang wants to merge 1 commit into
LuceteYang wants to merge 1 commit into
Conversation
The egg card only said the current Pokémon is sent off, so the natural reading was that its Pokédex entry goes with it. It does not: buyEgg() appends releasedDexEntry() before clearing the active Pokémon, so the species stays in the Pokédex. The odds are worth stating too, and in the other direction from what you would guess. chooseBase() halves the weight of any base whose line you have already completed, and that check reads collectedFinals, which only graduation fills. Releasing leaves it untouched, so a released Pokémon keeps its full hatch weight and can come back at the same odds. Add eggReleaseNote directly under eggDescription, where the reader has just been told what they give up. The price row stays for the price, the button, and eggShopLockedHint. Shown only while there is a Pokémon to release. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
LuceteYang
added a commit
to LuceteYang/PikaTokenBar
that referenced
this pull request
Sep 11, 2026
LuceteYang
added a commit
to LuceteYang/PikaTokenBar
that referenced
this pull request
Sep 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
I bought an egg expecting to lose the Pokémon I was raising — and specifically expecting it to disappear from my Pokédex. Reading the code afterwards, I was wrong on both counts that matter.
The card says only "Send off your current Pokémon and start fresh with a new egg." Nothing follows it, so "send off" reads as "lose it", and the shiny warning sitting right next to it reinforces that something irreversible is happening.
What actually happens:
buyEgg()appendsreleasedDexEntry(from:)before clearing the active Pokémon, so the species stays in the Pokédex.FreshEggTests.testReleasedSpeciesStaysInTheDexlocks this in.chooseBase()halves the hatch weight of any base whose line you have already completed. That check readscollectedFinals, which onlygraduate()fills — releasing leaves it untouched, so a released Pokémon keeps its full weight and can hatch again at the same odds.The one thing you do give up is the growth progress. The shop says none of this, so the card reads scarier than the feature is.
And in Korean, where the description fits on one line so the note costs two:
Rendered the same way as
scripts/gen-settings-screenshots.pydoes its assets — the popover cannot be opened from a script, so the card is drawn in HTML with the colours and metrics sampled fromassets/screenshot-shop.png/-ko.png.What changes
Adds
eggReleaseNoteright undereggDescription:It goes in the description column rather than the price row, which belongs to the price, the button and
eggShopLockedHint. Rendered only while there is a Pokémon to release. Translated for all seven languages.Re-incubation is deliberately left out —
eggDescriptionalready says the new egg starts from scratch, and repeating it pushed the German string to three lines.Testing
swift buildandswift test(1048 tests) pass.🤖 Generated with Claude Code