Skip to content

Custom Teleport Locations #5

Description

@devoreofox

Problem/Opportunity Space

The teleport window's Residential Areas list only shows estates you own or are a resident of, and only with the game's default names. There's no way to add entries for places you visit often but don't own (a friend's plot, an FC you frequent), so reaching them means remembering the ward/plot and manually navigating every time. This is the deferred "Feature B" half of the teleport-label work; Feature A (renaming your own rows) ships separately as the Personal Estate Labels tweak.

Acceptance Criteria

  • User can add a custom bookmark for a plot they do not own (world, district, ward, plot)
  • Bookmarks can be scoped as global (always shown) or world-specific (shown only when on that world)
  • Bookmarks appear alongside real residential entries and are individually editable/removable
  • Bookmarks persist across sessions and game restarts
  • Selecting a bookmark gets the user to (or toward) the destination without a manual walk

Suggested solution

Let users define custom teleport bookmarks for arbitrary plots. Since the game has no teleport action for a plot you lack access to (Telepo.Teleport only reaches entries already in your list), selecting a bookmark routes through Lifestream, either via IPC or (as a lazy first pass) a Lifestream chat-command call, to teleport to the nearest residential aetheryte and walk to the plot. Estimated cost to the nearest aetheryte can be shown via Telepo.GetTeleportCost (residential cost is quartered).

Bookmarks come in two scopes: global entries always appear (e.g. "friends house"), and world-specific entries appear only while on their bound world (e.g. "random fc" shows only on Jenova).

Suggested design

  • Config stores a list of bookmarks: label + world + district + ward + plot, plus a scope (global, or world-specific bound to a home world)
  • On render, filter bookmarks by scope: always include global; include world-specific only when its bound world matches the player's current world
  • Bookmark rows injected into the AtkComponentTreeList in AddonTeleport, re-applied on refresh (the agent rebuilds the list from Telepo.TeleportList each update)
  • Selection handler hands off to Lifestream (IPC preferred, command-call as the lazy fallback)
  • Cost column populated from Telepo.GetTeleportCost(aetheryteRow, multiplier, favored, residentArea: true)
  • Design imagery: mock the Residential Areas list with an injected "Sumi's House - Jenova, Shirogane W21 P14" row

Testing Considerations

Happy path

  • Added bookmark shows in the Residential Areas list with its custom label and estimated cost
  • Global bookmarks show on every world; world-specific bookmarks show only on their bound world
  • Selecting a bookmark hands off to Lifestream and reaches the correct ward/plot
  • Bookmarks survive addon refresh, tab switches, scrolling, and a game restart

Sad path

  • Lifestream not installed / disabled: bookmark fails gracefully and instead teleports them to the city state the plot is located in
  • Invalid or out-of-range ward/plot, or a district that doesn't exist: rejected at input, not on click
  • World-specific entry does not leak onto other worlds after a world visit/data-center travel
  • Injected rows don't corrupt or duplicate real entries when the game repopulates Telepo.TeleportList

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions