Entry 315
Three player reports: Elk left in the party, Natsume's talk, the Gott statue's hold
Filescrates/piney-world/src/field_world.rscrates/piney-world/src/combat/mod.rscrates/piney-world/src/combat/stage.rscrates/piney-game/src/session.rscrates/piney-game/src/session/tests/party_leave.rscrates/piney-game/src/session/tests/side_events.rscrates/piney-game/src/session/tests/town_return.rsBUGS.md
GitHub issues 16, 17 and 18 (Infection). Each case was played in the session as the report describes it before any change, and each test fails without its fix. Addresses are INF unless marked; messages by number only.
Issue 16: Elk kept a nameless party slot after event 18
Event 18 (MG0510) block 20, after the Data Bug in area 19's dungeon
(point 1's room), ends with pc_act 1 5, pc_act 10 5 and scene 0 0.
It has no party_remove. Act 5 is remote command 5: ccAI::ManualControl
(gcmn 0x00580ef0) transfers the member out and calls resignParty(id)
(gcmn 0x0059d150), so DelMember empties his slot at once. The fellow
task's exit later frees his registry slot (expulsionSpc, DelSpc).
The port's battle stage only carried out ResignParty/DisbandSpc where
it held the registry, which was the town. In fields and dungeons the call
was dropped, so a member left only through his exit. Played from block 18
with Elk and Mia in the party: Mia's exit came before scene 0 0, Elk's
did not. The change of scene's fellow deletes freed his registry slot and
kept his party slot. Mac Anu then showed party [0, 10, -1] with the
registry Kite alone: a face with no name (the town's panel draws every
memberID; the name comes from the built character), and nobody to see.
A field built only registered members, so Elk was gone there; Mac Anu
showed him again. This is the report's three screenshots.
Fix: combat::Tasks carries the field world's Spcs, and its frame
resigns and disbands on it as the town's does; the battle's party is
re-synced when that changes. event_18_leaves_kite_alone plays blocks
18-20 (the pilot drains the Data Bug) and checks the party and registry
in Mac Anu, a field and Mac Anu again. Before: [0, 10, -1]. After:
Kite alone each time.
Issue 17: Natsume's PC menu instead of her line
Event 61 block 4 (has_item 0 0 60 <= 0, talked_to 2 11) answers a talk
to Natsume with message 3. ccEvent::CheckOperate(9) (main 0x001b32f0)
refuses the talk when cmndTarget->base->type has a target's type bit
and base->id (+0xc) is its code. The field's copy of that test read the
character at scene index code, but a party character's command code is
its charTbl row (11). Natsume is scene character 1, so the id was wrong
and the field opened menu 21 (Talk, Trade, Gift), as in the screenshot.
Now it takes the scene index from target_index.
event_61_natsume_wants_the_spiral_edge: before, menu 21 and no message
3; after, message 3.
Issue 18: block 11 ran on entering the statue's room
Block 11 (in_point 2, the statue's room at floor 2 block 5) waits on
no_active. CheckOpen's case (0x001a8614-0x001a86d4) needs
ccCheckActiveObject() and also walks g_entCtrl.gimHead (+0x2c,
gimNum +0x28). Any gimmick with objFlag set (+0xe0 bit 0),
base->type bit 20 (0x100000, the idols' ItemIdolMenu type) and
cmndFlag clear (bit 6) fails it. The unopened statue is one until
ccGimIdol::main's opening deleteCmnd. The port's no_active_object
left the gimmicks out. Mutation, Outbreak and Quarantine run the same
walk (lui 0x10, lbu 0xe0, next at +0x1c4).
event_61_the_statue_holds_block_11: before, message 12 and room 0 0
within 300 frames of entering; after, block 11 waits, the statue opened
lets it run, and at the entrance block 5 asks for the Spiral Edge. Kept
(message 5's second answer), block 6 runs, and a talk then runs block 8.
Harness note
natsume_dungeon now goes to the point's room with room_select, as
room_point does. The old test's ChangeScene to the same room, asked in
the first frames of play, left Natsume off the command list. The same
request a little later kept her listed. No player can ask for a scene
change in those frames.
nothing about these three rules. The reporter's own order of play is not known (in the screenshots Elk is in slot 1); it does not change the cause.