Port the PC and boxes
Checks / web (push) Canceled after 0s

Read TileCollisionStdScripts from the ROM so the Pokémon Center PC runs
PokemonCenterPC: Bill's PC (deposit, withdraw, release, change and name
boxes), the player's item storage (withdraw, deposit, toss, mail box) and
Oak's Pokédex rating. The house PC now opens the full player's PC menu.

A catch with a full party goes to the current box through SendMonIntoBox;
a full box keeps the ball, and filling it queues Bill's call as a memory
script after the battle. Saves gain boxes, box names and PC items,
migrated by absence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sébastien QUEROLandClaude Opus 5.5 committed 2026-09-25 17:12:26 +02:00
1 parent 451464f7c6
commit 3bdca0099e
21 files changed
+1999 -131

No files matched your search

+45 -2
View File
@@ -1,7 +1,7 @@
# Recovered Claude session
Latest continuation: see **Overworld foundation completed: 2026-09-25** at
the end of this file. Earlier sections are historical snapshots.
Latest continuation: see **The PC and boxes: 2026-09-25** at the end of
this file. Earlier sections are historical snapshots.
Recovered on 2026-09-23 from the local Claude Code transcript
`~/.claude/projects/-Users-kawa-Crystal/4ac88f30-29e6-4fd5-a4b2-b6a318dd83b3.jsonl`.
@@ -432,3 +432,46 @@ screens. Also open there: player switching and non-ball items in battle,
controlled-seed comparisons beyond damage and type effectiveness, and a
continuous opening-quest playthrough with save/reload. Later maps stay gated
until their scripts and story are supported.
## The PC and boxes: 2026-09-25
The foundation above was committed and pushed as `451464f`. This increment
continues PLAN section 2 with its first open item.
- `party/storage.ts`: 14 boxes of `BoxMon` (a party struct without status,
HP and stats), the current box, box names (null is the ROM's "BOX" and
number) and 50 PC item stacks. `SendGetMonIntoFromBox` deposit and
withdraw, `RestorePPOfDepositedPokemon` and `CalcLevel` are shared helpers.
`maxPP` (ComputeMaxPP) now also serves `HealParty`.
- `scripts/pc.ts`: `PokemonCenterPC` and the house PC. The Pokémon Center PC
opens Bill's PC (deposit, withdraw, release, change and name boxes) and the
player's PC (item withdraw, deposit and toss, the empty mail box), plus
Oak's rating once the Pokédex is owned. The house PC adds DECORATION. Menu
strings, lists and texts are read from the ROM (`PC` table in the profile,
verified by `check:reference`). The generic menu effect gained per-item
`details` (levels, box counts). A `notice` effect covers unported
options without aborting.
- Facing tiles now use the ROM's `TileCollisionStdScripts` in any direction,
as in the original (the old table only fired when facing up).
- Capture with a full party: `SendMonIntoBox` puts the catch first in the
current box, with nickname and `BallSentToPCText`. A full box keeps the ball
(`Ball_BoxIsFullMessage`). Filling the box sets `BATTLERESULT_BOX_FULL`.
`reloadmapafterbattle` then queues Bill's call through a new `memscript`
effect (`LoadMemScript`). It is kept in memory only and runs before scene
scripts.
- Save format 3 gained `storage` and `pcItems`, migrated by absence.
Not ported: MOVE PKMN W/O MAIL and the stats screen (notices), printing,
`givepoke` with a full party (still refused; unreachable in the open maps),
the save messages after a box switch, and the tutorial with a full party and
box (the original loops forever; refused).
Checks: 290 unit tests with the local ROM (130 passed, 160 skipped without
it); 83 Chromium/WebKit browser tests passed, 19 skipped intentionally
(including a new Pokémon Center PC flow in both browsers); native and
reference builds; reference, vendor and release checks; `git diff --check`.
Not committed.
Next (PLAN section 2): the introduction's naming and clock screens; player
switching and non-ball items in battle; MOVE PKMN W/O MAIL and the stats
screen with the party menu; a continuous opening playthrough.