Telepipe
The key words MUST, MUST NOT, MAY, and REQUIRED below are used as in RFC 2119.
A telepipe is a portable shortcut between the field and the city. Distinguish two things: the Telepipe item (a stackable consumable in the inventory) and the placed telepipe (the open portal in the world).
The telepipe is a pure movement primitive that binds to the Field Context, not to quest state — completing a quest does not cancel it. See Session Model for that contract and why the coupling caused crashes.
Items vs the placed pipe
- The player MAY carry up to 10 Telepipe items.
- Using a Telepipe item MUST consume exactly one item from the stack and open a placed telepipe.
- At most one placed telepipe MUST exist at a time. Using another item while a pipe is open MUST close the previous pipe (the item is still consumed).
Round trip
Opening a pipe consumes the item but does NOT immediately close the pipe. While the pipe is open the player MAY move between field and city repeatedly:
- Stepping into the field-side pipe travels to the city. The pipe MUST stay open.
- Re-entering the field via the city teleporter MUST keep the pipe open and re-spawn the field-side pipe at its drop spot, so the player can ride it back again. This MAY repeat any number of times.
- The placed pipe MUST close only when the player returns to the field by stepping into the city-side pipe — a one-shot return.
The placed pipe MUST close when
- The player returns to the field through the city-side pipe (round trip complete).
- A new Telepipe item is used (the new pipe replaces it).
- A quest is accepted (a fresh expedition replaces any free-field pipe).
- A quest is reported at the guild counter (rewards claimed) or cancelled.
- The player returns to the title screen.
Switching free fields does NOT close the pipe. A pipe dropped in Valley 2 stays open and keeps routing back to Valley 2 even after the player starts Wetlands 1 — it persists for the whole Free-Roam period until one of the events above occurs.
Completing a quest's objectives does NOT close the pipe. Meeting the last objective marks the quest complete (rewards now claimable) but leaves the player in a live quest field — they MAY keep exploring and round-tripping through the pipe. The pipe (and the field) close only when the player reports the quest to the guild or cancels it. See the Session Model for why "complete" (in-field) and "report / cancel" (the exit) are distinct.
End-of-quest telepipe
A quest MAY open a telepipe at its end as a quick ride back to the city. Because exactly one pipe may exist, this story pipe MUST close any pipe the player had already placed. The player MAY instead ignore it and use their own item; doing so closes the story pipe in turn. Whichever was opened most recently is the one that remains.
Conformance scenario
- Start the game and enter Free Roam.
- In a field, drop a telepipe and ride it back to the city — the pipe stays open.
- Switch to a different free field from the teleporter — the pipe is still open and still routes to its drop spot (a new free expedition does not close it).
- Accept a quest at the guild counter → the telepipe is cleared (quest accepted).
- Enter the quest and drop a telepipe in the first area.
- Ride it back to the city — the pipe stays open.
- Re-enter the quest from the teleporter — the pipe is still open; the field-side pipe re-spawns at the drop spot.
- Ride the field-side pipe to the city again — still open (round-tripping is unlimited).
- Return to the field via the city-side pipe → the round trip completes and the pipe closes.
- Drop another telepipe.
- Reach the quest's final objective — the quest is now complete (rewards claimable) but the pipe stays open and the player MAY keep exploring. The quest auto-spawns an end-of-quest telepipe, which closes the pipe from step 10 (replaced).
- Ride the end-of-quest telepipe back to the city.
- Report the quest at the guild counter → rewards granted and the telepipe is cleared (quest reported).
Edge case: returning to the title screen at any point clears the active telepipe.
Persistence
The placed pipe is in-memory only and MUST NOT survive any of the closing events above. Item counts persist with the inventory as normal.
Implemented by
scripts/autoloads/telepipe_manager.gd(TelepipeManager) — single-slot lifecycle: one-active_statedict,place()/cancel(), and the one-shotconsume_return()round-trip return.scripts/3d/elements/telepipe.gd(Telepipe) — the placed in-world pipe element; an interactable cylinder that emitsactivatedwhen the player steps in to warp.scripts/autoloads/session_manager.gd(SessionManager) — MUST callTelepipeManager.cancel()on questaccept_quest(),report_quest(), andcancel_accepted_quest(), and on title return — but NOT on objective completion (mark_quest_complete()), which leaves the pipe and field alive.