Repository navigation
Seamless co-op: Dream Island trip, buried spots and memory pieces in a story-area session - #636
Merged
Merged
Conversation
…pieces stay the host's Three reports from the seamless co-op Testing build. - pkp_link_trips: Drifloon's Dream Island trip is the game's group feature of Palette Town and the Cloud Islands. Started from a story area's session it renamed the session to the Dream Island while the area's terrain stayed loaded. In a story area online the poll's result now reads "stays" for the player (the game's own path) and a request for the island is dropped. - pkp_link_digspots: a story dig spot (gold glow, buried item) is made from the host's own save and ended only by the host's own change of that block. When another player removes the block the spot is now ended with the game's own code: the item drops at the spot for the host and the glow goes. - pkp_story_pickups: the host handler claims a memory piece for the visitor it gives it to and never frees the claim, so the host could not take the piece until its world was loaded again. The claim is freed. pkp_site_check.h holds the hook-site check the new modules share. Six new hook sites in main.sites: the game code is built again once.
3 tasks done
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.
What it changes
Three player reports from the seamless co-op Testing build (0.13.0-beta.2).
1. Dream Island trip from a story area. Asking Drifloon for a Dream Island in a session left everyone in the same area, renamed "Dream Island", with an all-blue map, an island arrival structure and lit caves. The trip is the game's own group feature in Palette Town and on Cloud Islands (poll, then everyone who said yes travels); the game never starts it from a story area online, and the island code only knows the two towns. With story areas open to a session, Drifloon's talk started it there: the stage switched to the Dream Island while the area's terrain stayed loaded.
Now (
core/pkp_link_trips): while the player is online in a story area (stages 1-10), the poll's result reads "this player stays", which is the game's own path for a player who voted no, and a request for the island that still arrives from another player is dropped. A message on screen says the trip is not available there. Palette Town and Cloud Islands keep the trip.2. Gold glow left behind after a visitor breaks the block. The glow is a story dig spot: a buried item, made from the host's own save (a closed story quest unlocks it, a "found" bit ends it). The game keeps these on the host only and ends one in a single place, the host's own change of that block. When another player removed the block, the glow was redrawn over the empty cell every frame and the item was never given.
Now (
core/pkp_link_digspots): on the host of a session, a spot whose block was natural terrain and has been gone for 30 frames is ended with the game's own function, as if the host had dug it up: the item drops at the spot, the found bit is set, the glow goes.3. Unique collectibles a visitor takes. The host's handler claims a memory piece for the visitor it gives it to and never frees the claim, so the host could not pick that piece up until the world was loaded again. The claim is now freed (
core/pkp_story_pickups, with the game's own call).Pokémon traces themselves need no change: they are a per-player list on each PC, nothing about them is sent to other players or saved in the world, so investigating one cannot take it from another player. The changelog's known-problems list now says which things differ per player by design (story markers, story talks, buried spots, traces).
core/pkp_site_check.his the hook-site check (expected instruction word, midhook site lifted) the two new modules share.For players
CHANGELOG.md## Unreleasedhas an entry (Before / Now / Still not), or this change is not player-facingmain.sites, so the game code is built againPros
link_interact_everywhereorlink_story_coopon; offline play is untouchedCons
pkp_story_guard,pkp_story_hold,pkp_story_pickupsandpkp_linkplaystill carry their own copies of the site check; moving them topkp_site_check.his a follow-up