# mod-personal-isle

FFXIV-Island-Sanctuary-inspired: a persistent, private instanced island each character can visit,
reached via a teleport NPC and/or a dedicated "Isle Hearthstone" item. **Module and feature name
are working titles** -- see `PLAN.md`'s "Open questions" before treating either as final.

## Current status: v0 (hello-world scaffold)

No island, no teleport, no map/DBC work yet -- this commit just proves the module wiring works:

- `PersonalIsle.Enable` config flag is read correctly (`conf/mod_personal_isle.conf.dist`).
- `PersonalIsle_World::OnStartup` logs a confirmation line so a successful load is visible in the
  server log.
- `.isle` (`SEC_PLAYER`) registers and responds with a placeholder message, proving command
  registration works end-to-end.

Everything else -- the island terrain itself, DBC wiring, per-player instancing, entry/exit
points -- is planned but not built. See `PLAN.md`'s roadmap.

## Scope, agreed 2026-08-20

- **Terrain is custom-authored** (Noggit3 or similar), not a reuse of existing WoW geography. This
  is manual 3D-editor work outside what this module's code can produce -- it's the long pole on the
  whole project. Ships as a client-side MPQ patch every connecting player needs.
- **MVP is cosmetic, minimal-loop**: one fixed island layout, a handful of static decorative
  spawns, no player building placement, no gathering/production automation. Explicitly deferred,
  not out of scope forever -- see "Later ideas" in `PLAN.md`, including a possible tie-in with
  `mod-hirelings` for passive gathering.

## Config

See `conf/mod_personal_isle.conf.dist`:

- `PersonalIsle.Enable` (default `1`) -- toggles the whole module.

## Custom ID ranges

Reserved, not yet consumed by any SQL:

- **Spell IDs 950000-950099**
- **Creature / npc_text / gameobject IDs 951000-951099**
- **Quest IDs 952000-952099** (reserved, likely unused until post-MVP)
- **Item IDs 953000-953099** (the Isle Hearthstone lives here)

Picked as the next clean block after `mod-eternal-bond` (940000-944099) -- check that module's
README before reassigning.

**Not covered by the above:** `Map.dbc` / `AreaTable.dbc` / `WorldMapArea.dbc` /
`LoadingScreens.dbc` IDs are a separate, client-side DBC ID space. They can't be picked until the
island terrain exists -- see `PLAN.md`.