# mod-personal-isle — Plan
FFXIV Island Sanctuary-inspired: a private, persistent instanced island per character. Reached via
a teleport NPC and/or a dedicated "Isle Hearthstone" item (own icon/spell, long cooldown, same
family as the retail Hearthstone). Scoped down hard for v0/v1: cosmetic personal space first,
gathering/automation deferred.
## Design pillars
- **WoW-flavored presentation, FFXIV-inspired mechanic.** Same pattern as `mod-hirelings`
(Hirelings, not Retainers): the *system* (personal instanced getaway) is the FFXIV idea worth
borrowing, the *name and dressing* should read as native WoW content, not an import. Real
in-fiction name/flavor is an open question below -- "Personal Isle" is a working title only.
- **Terrain is real, authored art**, not reused/repurposed existing WoW geography (this was an
explicit choice over the lower-effort "reuse an existing landmass + phasing" alternative,
2026-08-20). Consequence: this module's code can't produce the terrain itself -- that's manual
Noggit3 (or similar) work, and it gates everything else. The module's actual code scope is
everything downstream of a finished terrain file.
- **Cosmetic MVP, not a production sim.** No building placement, no gathering/crafting automation
in v0/v1. The goal is proving the personal-instance + entry/exit mechanics end-to-end before any
economy/automation design. See "Later ideas" for where the sim depth goes eventually.
- **Persistent per-player instance, not phasing.** Considered hiding players from each other on a
shared continent via the existing phasing system (cheaper to build) vs. a true per-player
instanced map (like a dungeon, but never resets). Went with true instancing because future
per-player decoration/placement (a later-ideas item, not v0) needs each player to have an
independently-stateful copy of the map, which phasing alone doesn't give cleanly.
## Technical shape (agreed 2026-08-20, not yet implemented)
1. **Terrain** (manual, outside this module's code): WDT/ADT authoring in Noggit3, texturing,
doodad placement. Long pole on the whole project -- nothing else below can be finished/tested
until at least a first-pass terrain file exists.
2. **Client-side DBC wiring** (once terrain exists):
- `Map.dbc` -- new entry, type continuous-but-instanced: no group requirement, no reset,
conceptually closer to how retail Garrisons work than to a dungeon.
- `AreaTable.dbc` + `WorldMapArea.dbc` -- correct minimap/world map display.
- `LoadingScreens.dbc` -- dedicated loading screen entry.
- `Light.dbc` -- only if the terrain needs lighting the default doesn't cover.
- Ships as an MPQ patch; every connecting player needs it. Uses the same client-distribution
flow already in place for the server.
3. **Server-side instancing (this module's actual C++):**
- Map script: on first visit, create a persistent personal instance of the island map for that
character; same instance ID reused on every subsequent visit (not reset like a dungeon).
- Entry: a teleport NPC (safe default, placed in a home city) **and** an "Isle Hearthstone" item
-- both call the same teleport-to-personal-instance logic, so the item is a convenience
duplicate of the NPC, not a separate system.
- Exit: a matching return point on the island (NPC or item) that sends the player back to
wherever a normal Hearthstone would.
## MVP feature list (cosmetic, minimal loop)
- One fixed island layout -- no per-player variation, no building placement.
- A handful of static decorative spawns (vendor, maybe a fishing spot, a couple of ambient
critters) so it doesn't feel dead. Not gameplay-relevant.
- No gathering nodes with real yields, no automation, no currency. Explicitly deferred.
## Status
- **v0 (2026-08-20, not yet in-game tested):** hello-world scaffold only. Module loads
(`PersonalIsle_World::OnStartup` logs a confirmation), `PersonalIsle.Enable` config flag reads
correctly, `.isle` command registers and responds with a placeholder line. No terrain, no DBC
work, no instancing, no SQL yet.
## Later ideas (explicitly deferred past MVP)
- **Hireling tie-in**: send a `mod-hirelings` hireling to the island to gather passively while
offline -- the actual Island-Sanctuary-idle-production feel, once both modules exist. Explicitly
not v0/v1 -- keeps the two modules decoupled until the personal-instance mechanics are proven.
- **Building/decoration placement** per player -- workshop-adjacent, meaningfully bigger scope than
the cosmetic MVP.
- **A real economy** (FFXIV's cowries-equivalent currency, shop) if/once production automation
exists -- pointless before that.
- **Visiting other players' islands** (read-only tour, FFXIV-style) -- would need the persistent
per-player instance to support a visitor flag; not needed for MVP.
## Open questions for whoever picks this up next
- **Real in-fiction name/flavor.** "Personal Isle" is a placeholder working title (and the repo/
module name). Needs an actual WoW-native identity before this ships to players -- e.g. what
faction/entity "sells" or "grants" access to the island, matching how `mod-hirelings` anchored
itself to the Steamwheedle Cartel.
- **Terrain authoring status/pipeline** -- no terrain work has started as of this commit. Needs an
owner and a first-pass layout before any DBC/server work can be meaningfully tested.
- **Exact DBC IDs** (`Map.dbc` etc.) -- can't be picked until terrain exists; note in README that
this is a separate ID space from the module's reserved 950000-953099 world-DB block.
- **Entry NPC placement** -- which home city, exact coordinates -- not decided, low-stakes,
decide at implementation time (same pattern as `mod-hirelings`' Contract Board placement).
- **Isle Hearthstone item specifics** -- icon, cooldown length, whether it shares a cooldown
category with the real Hearthstone or runs independently -- not decided.