`CONTEXT.md` seeded. Now the conceptual spine.

---

**Q2 — Shared world vs per-player progression (the multiplayer/metroidvania tension).**

BNO is multiplayer (you see other Navis, you chat) AND a Metroidvania (each player unlocks zones/areas/abilities at their own pace). Those pull opposite directions. The legacy tile doc already gives one hard data point:

> HEXBRIDGE … Activation state is **per-player**. Player cannot see or walk on the hexbridges that other players have activated.

**My recommended model:** the **world geometry is shared** (everyone occupies the same zones/rooms, sees each other move + chat in real time), but **progression/traversal state is per-player** — which hexbridges are active, which warps/zones/areas you've unlocked, which platforms are revealed to *you*. Two players standing in the same room can literally see different walkable surfaces. Server tracks per-player unlock/activation state; rendering of traversal elements is per-player.

Three things I want to nail here:

1. **Is that split right** — shared presence + chat, per-player traversal/progression state? Or is *some* traversal state global (e.g. a platform one player triggers stays up for everyone in the room for a few seconds)?
2. **Does seeing another Navi imply you can interact with the geometry they're standing on?** E.g. Player A is on a hexbridge invisible to B — does B see A "floating"? Is that just accepted?
3. **Where does the per-player line stop?** Movers, slippery ice, flicker tiles, hidden/glow reveals — are those **environmental** (same for everyone, just react to whoever touches them) while only **unlock-gated** elements (hexbridge activation, warp/zone/area access) are per-player?

My instinct: hidden/glow/flicker/mover/slippery are *environmental and shared* (they react per-collision but exist for all), and only *progression-gated* elements (hexbridge activation, warp/zone/area/spectrum access) are per-player. Right?


1. Yes, that split is correct. Note that the intention is for moving platforms to be deterministically located, such that their locations are synced across clients. But anything that revolves around the player unlocking it or possessing certain abilities or inventory items, that's all per-player state. 2. Yes, B just sees A floating in that instance. A is standing on something that is either hidden or unavailable to B. So seeing A means B can *potentially* interact with that geometry, but doesn't mean that it's unlocked for B. 3. Any animation loops should be synced. As mentioned, moving platforms are synced. Flicker tiles should be synced. Glow tile activation should be synced. Hidden tile activation NOT synced, and in fact navis on hidden tiles should be invisible to other navis who don't share the same contiguous body of "hidden tile" floor. Movers and slippery ice don't really have unique state of their own. Movers just have a looping animation. --- there is an interesting navi expansion which encourages players to work together. the DuoPlugn / Duo System enables two navis to form a duo, which benefits both players and makes it easier to overcome challenges. navis in a duo should always be able to see each other. i liken it to the "digger + spotter" relationships in Megaman Legends.


<owl_reachability_notice>
You have an active owl perch. When spawning subagents or doing work, use run_in_background: true so you stay reachable for incoming messages.
</owl_reachability_notice>


CAVEMAN MODE ACTIVE (full). Drop articles/filler/pleasantries/hedging. Fragments OK. Code/commits/security: write normal.


Captured. The axis is sharper now: **deterministic-synced** (platforms, anim loops, flicker, glow) vs **per-player state** (unlocks/inventory), plus a **visibility** layer. And the Duo system is a new term.


Edit

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.


The file C:\Users\decid\Documents\projects\rebno\CONTEXT.md has been updated successfully. (file state is current in your context — no need to Read it back)

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### World structure _(draft — being refined)_

**Zone**:
A top-level region of the world (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness'
Hull). Reaching a zone requires its **Zone Data** collectable.

**Area** (alias: **Subregion**) _(draft)_:
A sub-region within a Zone. Reaching an area by teleport requires its **Area Data**, which is
only usable if you already hold the parent Zone's Zone Data.

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (legacy code aliases: `WrpPlugn`, `MskPlugn`):
A class of Key Item that unlocks a Navi ability or feature. Examples: `WrpPlugn` enables use of
**Warp** tiles; `MskPlugn` enables use of **Spectrum Data** (via Spectral Gates).

**Collectable**:
A gatherable reward. The known taxonomy, all surfaced in-universe as **Data** drops:
- **Zone Data** — unlocks teleport to a Zone.
- **Area Data** — unlocks teleport to an Area within a Zone you already hold Zone Data for.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Data** _(draft)_:
The in-universe noun for collectable item drops (zone/area/spectrum/friend data). The avatar,
NPC, and "data" drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art
is original.

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

**Hexport**:
A mode of travel through dedicated tiles (Hexporter / Hexsling / Hexbridge). Distinct from Warp
and from Data-teleport.

**Warp**:
Intra-zone teleportation via Warp tiles. Inert without the `WrpPlugn` Navi Expansion.

**Spectrum Data customization** (via **Spectral Gate** tiles):
Equipping Spectrum Data to change the Navi's appearance. Requires `MskPlugn`.

### Social

**Message Board**:
A persistent in-world posting surface (legacy `MB_News` / `MB_Log`). New boards are a
progression reward.

**Friend Data**:
The legacy in-universe friends list (collected as Data). _Flagged: see ambiguities._

## Flagged ambiguities

- **"Friends list"** — legacy **Friend Data** (an in-universe collectable) vs a *modern*
  account-level friends list proposed in `.planning/research/FEATURES.md` as a new
  differentiator. These may be the same concept or two distinct systems. **Unresolved.**

## Example dialogue

_(to be written once core terms are confirmed)_

+World state driven by shared server time so every client renders it identically: moving

+**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile

+activation. Not per-player. (Movers and slippery ice have no unique state — just a looping

+Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,

+**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/

+spectrum). Two players in the same room can stand on different walkable surfaces.

+A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same

+**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated

+hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that

+geometry, not that it is unlocked for you.

+A connected group of Hidden floor tiles forming one visibility group. Navis on the same body

+can see each other; outsiders cannot see them.

+**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):

+A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter

+relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the


1. Yes, that split is correct. Note that the intention is for moving platforms to be deterministically located, such that their locations are synced across clients. But anything that revolves around t…


ReBNO feature parity and platform expansion


Glossary updated — sync/visibility/Duo all in. Next, the structural spine.

---

**Q3 — World hierarchy + the three travel mechanics' roles.**

Legacy is GameMaker; extracted rooms include `0058-BNCentral` at 8000×6400. So I suspect the world maps roughly: **World → Zone → Area**, where each **Zone is one big GM room**, and **Areas are named sub-regions inside that room**. Then the travel verbs each operate at a different level:

| Mechanic | Scope | Gated by | Role |
|---|---|---|---|
| **Walking** + **Hexport** (hexporter/sling/bridge) | within a Zone | hexport needs no expansion; it's the *puzzle traversal* layer | the moment-to-moment exploration + timing/puzzle challenge |
| **Warp** tiles | within a Zone (intra-zone) | needs `WrpPlugn` | shortcut teleports inside a zone |
| **Zone Data** teleport | between Zones | possessing the Zone Data | fast-travel to a whole zone |
| **Area Data** teleport | to an Area inside a Zone | Area Data + parent Zone Data | fast-travel to a sub-region |

**My recommended model:** Zone = one large room (the GM room). Area = a named sub-region *within* that room (not its own room). Hexport is the core in-zone puzzle-traversal mechanic; Warp is a `WrpPlugn`-gated intra-zone shortcut; Zone/Area Data are the **fast-travel** layer (a menu/map teleport), not physical tiles you walk onto.

Three specifics:

1. **Is Zone ≈ one GM room?** Or does a single zone span multiple GM rooms (so Areas = separate rooms)?
2. **Are Zone/Area Data teleports a menu/map action** (pick a destination you've collected), or do you physically interact with something in-world to use them?
3. **Can you walk between adjacent zones**, or is *all* inter-zone travel teleport-gated (true Metroidvania — no zone reachable until you hold its Zone Data)?


-Walking: correct -Hexporting: wrong. hexporters are floor terminals that split the navi into 6 orbs of light, which then form into a flat hexagon of light which travels in a straight line under the world's floor tiles. they do require a navi expansion to use. hexslings redirect them, /clear


-Walking: correct -Hexporting: wrong. hexporters are floor terminals that split the navi into 6 orbs of light, which then form into a flat hexagon of light which travels in a straight line under the world's floor tiles. they do require a navi expansion to use. hexslings redirect them, /clearNOTE FROM THE USER: proceedwith next steps.


-Walking: correct -Hexporting: wrong. hexporters are floor terminals that split the navi into 6 orbs of light, which then form into a flat hexagon of light which travels in a straight line across empty space and under the world's floor tiles. they do require a navi expansion to use: HxpPlugn. hexslings redirect hexporting navis, hexbridges bounce them back after spawning a floor tile. -Warp: correct -Zone Data + Area Data: if the gates are clear, any of these can be set to be the player's "home" portal. it's where they spawn when logging in, and the only place they can fast-travel to from *anywhere*. Otherwise they must be standing at one portal to warp to another. That is, *until* they acquire RmtPlugn, which permits free fast travel (i think from anywhere... there might still be limitations). --- qs: 1. yes, zones were fully boxed into one gm room per zone, in legacy. areas were just subsections of zones delimited by invisible area transition markers. 2. /clear


-Walking: correct -Hexporting: wrong. hexporters are floor terminals that split the navi into 6 orbs of light, which then form into a flat hexagon of light which travels in a straight line across empty space and under the world's floor tiles. they do require a navi expansion to use: HxpPlugn. hexslings redirect hexporting navis, hexbridges bounce them back after spawning a floor tile. -Warp: correct -Zone Data + Area Data: if the gates are clear, any of these can be set to be the player's "home" portal. it's where they spawn when logging in, and the only place they can fast-travel to from *anywhere*. Otherwise they must be standing at one portal to warp to another. That is, *until* they acquire RmtPlugn, which permits free fast travel (i think from anywhere... there might still be limitations). --- qs: 1. yes, zones were fully boxed into one gm room per zone, in legacy. areas were just subsections of zones delimited by invisible area transition markers. 2. /clearNOTE FROM THE USER: proceed with next steps.


-Walking: correct -Hexporting: wrong. hexporters are floor terminals that split the navi into 6 orbs of light, which then form into a flat hexagon of light which travels in a straight line across empty space and under the world's floor tiles. they do require a navi expansion to use: HxpPlugn. hexslings redirect hexporting navis, hexbridges bounce them back after spawning a floor tile. -Warp: correct -Zone Data + Area Data: if the gates are clear, any of these can be set to be the player's "home" portal. it's where they spawn when logging in, and the only place they can fast-travel to from *anywhere*. Otherwise they must be standing at one portal to warp to another. That is, *until* they acquire RmtPlugn, which permits free fast travel (i think from anywhere... there might still be limitations). --- qs: 1. yes, zones were fully boxed into one gm room per zone, in legacy. areas were just subsections of zones delimited by invisible area transition markers. 2. in legacy, the user must 1. stand on a portal, then 2. open the menu to select and interact with link data they've acquired. in rebno, i intend to vastly improve the QoL/UX of this flow. -note that users also naturally warp back to their home portal if they fall during exploration (or have a slim chance to be warped to the digital abyss). 3. all inter-zone travel is teleport-gated. but you can find warps to zones before you have their zone link data. in fact, you must first locate a zone's central portal-->it's the source of zone link data. until you have it, you can't warp to that zone at all, and can only travel to it on foot. even the summon/join system rejects teleports to zones where a user has no zone link data. only a duo can bridge that gap. -for rebno, the lines may blur a little bit. i.e. there might be special inter-zone hexporters. TBD. --- it would be very helpful for our mutual understanding if you set off some subagent recon into "C:\Users\decid\Documents\projects\rebno\extracted\". do it however you like. some ideas of useful topics for them to scour the code for: constants/global vars, feature identifiers, and behavioral linkage.


Captured — major refinements. Hexport needs `HxpPlugn` (I had it wrong), the `*Plugn` family is the Metroidvania key-ring, "**Link Data**" is the precise term, and portals/home/abyss/summon-join are the fast-travel spine. Updating glossary + launching the recon you asked for.


### World structure _(draft — being refined)_

**Zone**:
A top-level region of the world (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness'
Hull). Reaching a zone requires its **Zone Data** collectable.

**Area** (alias: **Subregion**) _(draft)_:
A sub-region within a Zone. Reaching an area by teleport requires its **Area Data**, which is
only usable if you already hold the parent Zone's Zone Data.

### World structure

**Zone**:
A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy
BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a
zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply
cannot fast-travel to it yet.

**Area** (alias: **Subregion**):
A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**
(not a separate room).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there.


### World structure

**Zone**:
A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy
BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a
zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply
cannot fast-travel to it yet.

**Area** (alias: **Subregion**):
A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**
(not a separate room).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there.

# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### World structure _(draft — being refined)_

**Zone**:
A top-level region of the world (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness'
Hull). Reaching a zone requires its **Zone Data** collectable.

**Area** (alias: **Subregion**) _(draft)_:
A sub-region within a Zone. Reaching an area by teleport requires its **Area Data**, which is
only usable if you already hold the parent Zone's Zone Data.

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (legacy code aliases: `WrpPlugn`, `MskPlugn`):
A class of Key Item that unlocks a Navi ability or feature. Examples: `WrpPlugn` enables use of
**Warp** tiles; `MskPlugn` enables use of **Spectrum Data** (via Spectral Gates).

**Collectable**:
A gatherable reward. The known taxonomy, all surfaced in-universe as **Data** drops:
- **Zone Data** — unlocks teleport to a Zone.
- **Area Data** — unlocks teleport to an Area within a Zone you already hold Zone Data for.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Data** _(draft)_:
The in-universe noun for collectable item drops (zone/area/spectrum/friend data). The avatar,
NPC, and "data" drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art
is original.

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

**Hexport**:
A mode of travel through dedicated tiles (Hexporter / Hexsling / Hexbridge). Distinct from Warp
and from Data-teleport.

**Warp**:
Intra-zone teleportation via Warp tiles. Inert without the `WrpPlugn` Navi Expansion.

**Spectrum Data customization** (via **Spectral Gate** tiles):
Equipping Spectrum Data to change the Navi's appearance. Requires `MskPlugn`.

### Social

**Message Board**:
A persistent in-world posting surface (legacy `MB_News` / `MB_Log`). New boards are a
progression reward.

**Friend Data**:
The legacy in-universe friends list (collected as Data). _Flagged: see ambiguities._

## Flagged ambiguities

- **"Friends list"** — legacy **Friend Data** (an in-universe collectable) vs a *modern*
  account-level friends list proposed in `.planning/research/FEATURES.md` as a new
  differentiator. These may be the same concept or two distinct systems. **Unresolved.**

## Example dialogue

_(to be written once core terms are confirmed)_

-### World structure _(draft — being refined)_

-A top-level region of the world (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness'

-Hull). Reaching a zone requires its **Zone Data** collectable.

+A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy

+BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a

+zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply

-**Area** (alias: **Subregion**) _(draft)_:

-A sub-region within a Zone. Reaching an area by teleport requires its **Area Data**, which is

-only usable if you already hold the parent Zone's Zone Data.

+A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**

+The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must

+physically reach it before that zone joins your fast-travel network — until then you can only

+travel there on foot, and the Summon/Join system refuses to teleport you there.


**Navi Expansion** (legacy code aliases: `WrpPlugn`, `MskPlugn`):
A class of Key Item that unlocks a Navi ability or feature. Examples: `WrpPlugn` enables use of
**Warp** tiles; `MskPlugn` enables use of **Spectrum Data** (via Spectral Gates).

**Collectable**:
A gatherable reward. The known taxonomy, all surfaced in-universe as **Data** drops:
- **Zone Data** — unlocks teleport to a Zone.
- **Area Data** — unlocks teleport to an Area within a Zone you already hold Zone Data for.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Data** _(draft)_:
The in-universe noun for collectable item drops (zone/area/spectrum/friend data). The avatar,
NPC, and "data" drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art
is original.

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known
members:
- **HxpPlugn** — enables **Hexport** travel.
- **WrpPlugn** — enables **Warp** tiles.
- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **DuoPlugn** — enables forming a **Duo**.
- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a
  portal; exact limits TBD).

**Collectable**:
A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:
- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that
  zone's **Central Portal**.
- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you
  also hold the parent Zone's Zone Link Data.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Link Data**:
The teleport-enabling subclass of **Data** (Zone Link Data + Area Link Data) — the keys to the
fast-travel network.

**Data**:
The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and
"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is
original.


-Walking: correct -Hexporting: wrong. hexporters are floor terminals that split the navi into 6 orbs of light, which then form into a flat hexagon of light which travels in a straight line across empt…


**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known
members:
- **HxpPlugn** — enables **Hexport** travel.
- **WrpPlugn** — enables **Warp** tiles.
- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **DuoPlugn** — enables forming a **Duo**.
- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a
  portal; exact limits TBD).

**Collectable**:
A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:
- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that
  zone's **Central Portal**.
- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you
  also hold the parent Zone's Zone Link Data.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Link Data**:
The teleport-enabling subclass of **Data** (Zone Link Data + Area Link Data) — the keys to the
fast-travel network.

**Data**:
The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and
"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is
original.

# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### World structure

**Zone**:
A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy
BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a
zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply
cannot fast-travel to it yet.

**Area** (alias: **Subregion**):
A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**
(not a separate room).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there.

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (legacy code aliases: `WrpPlugn`, `MskPlugn`):
A class of Key Item that unlocks a Navi ability or feature. Examples: `WrpPlugn` enables use of
**Warp** tiles; `MskPlugn` enables use of **Spectrum Data** (via Spectral Gates).

**Collectable**:
A gatherable reward. The known taxonomy, all surfaced in-universe as **Data** drops:
- **Zone Data** — unlocks teleport to a Zone.
- **Area Data** — unlocks teleport to an Area within a Zone you already hold Zone Data for.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Data** _(draft)_:
The in-universe noun for collectable item drops (zone/area/spectrum/friend data). The avatar,
NPC, and "data" drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art
is original.

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

**Hexport**:
A mode of travel through dedicated tiles (Hexporter / Hexsling / Hexbridge). Distinct from Warp
and from Data-teleport.

**Warp**:
Intra-zone teleportation via Warp tiles. Inert without the `WrpPlugn` Navi Expansion.

**Spectrum Data customization** (via **Spectral Gate** tiles):
Equipping Spectrum Data to change the Navi's appearance. Requires `MskPlugn`.

### Social

**Message Board**:
A persistent in-world posting surface (legacy `MB_News` / `MB_Log`). New boards are a
progression reward.

**Friend Data**:
The legacy in-universe friends list (collected as Data). _Flagged: see ambiguities._

## Flagged ambiguities

- **"Friends list"** — legacy **Friend Data** (an in-universe collectable) vs a *modern*
  account-level friends list proposed in `.planning/research/FEATURES.md` as a new
  differentiator. These may be the same concept or two distinct systems. **Unresolved.**

## Example dialogue

_(to be written once core terms are confirmed)_

-**Navi Expansion** (legacy code aliases: `WrpPlugn`, `MskPlugn`):

-A class of Key Item that unlocks a Navi ability or feature. Examples: `WrpPlugn` enables use of

-**Warp** tiles; `MskPlugn` enables use of **Spectrum Data** (via Spectral Gates).

+**Navi Expansion** (the `*Plugn` family):

+A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known

+- **HxpPlugn** — enables **Hexport** travel.

+- **WrpPlugn** — enables **Warp** tiles.

+- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).

+- **DuoPlugn** — enables forming a **Duo**.

+- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a

-A gatherable reward. The known taxonomy, all surfaced in-universe as **Data** drops:

-- **Zone Data** — unlocks teleport to a Zone.

-- **Area Data** — unlocks teleport to an Area within a Zone you already hold Zone Data for.

+A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:

+- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that

+- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you

+  also hold the parent Zone's Zone Link Data.

-The in-universe noun for collectable item drops (zone/area/spectrum/friend data). The avatar,

-NPC, and "data" drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art

+The teleport-enabling subclass of **Data** (Zone Link Data + Area Link Data) — the keys to the

+The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and

+"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is


### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

**Hexport**:
A mode of travel through dedicated tiles (Hexporter / Hexsling / Hexbridge). Distinct from Warp
and from Data-teleport.

**Warp**:
Intra-zone teleportation via Warp tiles. Inert without the `WrpPlugn` Navi Expansion.

**Spectrum Data customization** (via **Spectral Gate** tiles):
Equipping Spectrum Data to change the Navi's appearance. Requires `MskPlugn`.

### Avatar

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized by equipping **Spectrum Data** at a
**Spectral Gate** tile (requires `MskPlugn`).

### Portals & travel

**Portal**:
An in-world teleport node. To fast-travel, a Navi stands on a portal and selects acquired
**Link Data** from a menu (legacy flow; ReBNO targets a heavily improved UX for this).

**Home Portal**:
A player-chosen portal (any cleared zone/area portal) that is their login spawn and the only
destination fast-travelable from *anywhere*. Falling during exploration also returns the Navi
here — with a slim chance of landing in the **Digital Abyss** instead.

**Digital Abyss**:
A rare fall-failure destination: instead of returning home, the Navi is warped here.

**Hexport** (requires **HxpPlugn**):
The signature in-zone traversal mechanic. A **Hexporter** floor terminal splits the Navi into
six light orbs that re-form into a flat hexagon of light, travelling in a straight line across
empty space and *under* the floor tiles. **Hexsling** tiles redirect a hexporting Navi;
**Hexbridge** tiles bounce it back after spawning a (per-player) floor tile.

**Warp** (requires **WrpPlugn**):
Intra-zone teleportation via Warp tiles. Inert without the expansion.

**Summon / Join**:
A player-to-player teleport system. It refuses to teleport a user into a Zone where that user
holds no **Zone Link Data** — only a **Duo** can bridge that gap.


### Avatar

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized by equipping **Spectrum Data** at a
**Spectral Gate** tile (requires `MskPlugn`).

### Portals & travel

**Portal**:
An in-world teleport node. To fast-travel, a Navi stands on a portal and selects acquired
**Link Data** from a menu (legacy flow; ReBNO targets a heavily improved UX for this).

**Home Portal**:
A player-chosen portal (any cleared zone/area portal) that is their login spawn and the only
destination fast-travelable from *anywhere*. Falling during exploration also returns the Navi
here — with a slim chance of landing in the **Digital Abyss** instead.

**Digital Abyss**:
A rare fall-failure destination: instead of returning home, the Navi is warped here.

**Hexport** (requires **HxpPlugn**):
The signature in-zone traversal mechanic. A **Hexporter** floor terminal splits the Navi into
six light orbs that re-form into a flat hexagon of light, travelling in a straight line across
empty space and *under* the floor tiles. **Hexsling** tiles redirect a hexporting Navi;
**Hexbridge** tiles bounce it back after spawning a (per-player) floor tile.

**Warp** (requires **WrpPlugn**):
Intra-zone teleportation via Warp tiles. Inert without the expansion.

**Summon / Join**:
A player-to-player teleport system. It refuses to teleport a user into a Zone where that user
holds no **Zone Link Data** — only a **Duo** can bridge that gap.

# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### World structure

**Zone**:
A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy
BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a
zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply
cannot fast-travel to it yet.

**Area** (alias: **Subregion**):
A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**
(not a separate room).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there.

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known
members:
- **HxpPlugn** — enables **Hexport** travel.
- **WrpPlugn** — enables **Warp** tiles.
- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **DuoPlugn** — enables forming a **Duo**.
- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a
  portal; exact limits TBD).

**Collectable**:
A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:
- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that
  zone's **Central Portal**.
- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you
  also hold the parent Zone's Zone Link Data.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Link Data**:
The teleport-enabling subclass of **Data** (Zone Link Data + Area Link Data) — the keys to the
fast-travel network.

**Data**:
The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and
"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is
original.

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar & travel

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

**Hexport**:
A mode of travel through dedicated tiles (Hexporter / Hexsling / Hexbridge). Distinct from Warp
and from Data-teleport.

**Warp**:
Intra-zone teleportation via Warp tiles. Inert without the `WrpPlugn` Navi Expansion.

**Spectrum Data customization** (via **Spectral Gate** tiles):
Equipping Spectrum Data to change the Navi's appearance. Requires `MskPlugn`.

### Social

**Message Board**:
A persistent in-world posting surface (legacy `MB_News` / `MB_Log`). New boards are a
progression reward.

**Friend Data**:
The legacy in-universe friends list (collected as Data). _Flagged: see ambiguities._

## Flagged ambiguities

- **"Friends list"** — legacy **Friend Data** (an in-universe collectable) vs a *modern*
  account-level friends list proposed in `.planning/research/FEATURES.md` as a new
  differentiator. These may be the same concept or two distinct systems. **Unresolved.**

## Example dialogue

_(to be written once core terms are confirmed)_

-The player-controlled avatar. Cosmetics are customized via **Spectrum Data**.

+The player-controlled avatar. Cosmetics are customized by equipping **Spectrum Data** at a

+**Spectral Gate** tile (requires `MskPlugn`).

-A mode of travel through dedicated tiles (Hexporter / Hexsling / Hexbridge). Distinct from Warp

-Intra-zone teleportation via Warp tiles. Inert without the `WrpPlugn` Navi Expansion.

+An in-world teleport node. To fast-travel, a Navi stands on a portal and selects acquired

+**Link Data** from a menu (legacy flow; ReBNO targets a heavily improved UX for this).

-**Spectrum Data customization** (via **Spectral Gate** tiles):

-Equipping Spectrum Data to change the Navi's appearance. Requires `MskPlugn`.

+A player-chosen portal (any cleared zone/area portal) that is their login spawn and the only

+destination fast-travelable from *anywhere*. Falling during exploration also returns the Navi

+here — with a slim chance of landing in the **Digital Abyss** instead.

+A rare fall-failure destination: instead of returning home, the Navi is warped here.

+The signature in-zone traversal mechanic. A **Hexporter** floor terminal splits the Navi into

+six light orbs that re-form into a flat hexagon of light, travelling in a straight line across

+empty space and *under* the floor tiles. **Hexsling** tiles redirect a hexporting Navi;

+**Hexbridge** tiles bounce it back after spawning a (per-player) floor tile.

+Intra-zone teleportation via Warp tiles. Inert without the expansion.

+A player-to-player teleport system. It refuses to teleport a user into a Zone where that user

+holds no **Zone Link Data** — only a **Duo** can bridge that gap.


Glossary current. Now launching the recon you asked for — 3 background agents over `extracted/`, each writing a findings file + returning a summary. They run while we keep grilling.


Agent

Recon: globals and constants

Prompt:
You are reverse-engineering the extracted GameMaker 5.3a source of "BN Online" (BNO), a social-exploration Metroidvania. Extracted GML lives under `C:\Users\decid\Documents\projects\rebno\extracted\` (two trees: `client-5-8` and `master-5-4`, from the client and server .gmd files). This is plain-text GML and resource metadata — read it, do NOT hex-inspect binaries.

MISSION: Catalog GLOBAL VARIABLES and CONSTANTS that define game state and tunables.

Start by listing the extracted/ directory structure so you know where scripts, objects, and rooms live. Then search GML for:
- Global variables: `global.*` reads/writes. Group by subsystem.
- Constants / macros / config values and any magic numbers used as tunables.
- HIGH PRIORITY — find storage/flags for these known systems:
  * Navi Expansions (the `*Plugn` family: HxpPlugn=hexport, WrpPlugn=warp, MskPlugn=spectrum/mask, DuoPlugn=duo, RmtPlugn=remote fast-travel) — how is "player owns expansion X" stored? Are there other `*Plugn` not in this list?
  * Link Data inventory (zone link data, area link data) — how is "player has unlocked zone/area N" stored?
  * Spectrum Data (avatar cosmetics) ownership/equip state.
  * Friend Data (in-universe friends list) storage.
  * Home Portal / spawn anchor variable; Digital Abyss; fall handling thresholds.
  * Tile/movement tunables: mover acceleration + peak velocity, slippery-ice behavior, flicker present/gone timing, room speed, view/camera dims.

OUTPUT: Write your findings to `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\01-globals-constants.md` as a well-organized markdown doc: tables of `name → inferred meaning → evidence (file:line + short code excerpt)`, grouped by subsystem, with a "Confidence / open questions" section. Then return a concise ~12-line summary of the most important findings (especially how expansion ownership and link-data inventory are stored). Be evidence-based; flag guesses as guesses.


<owl_reachability_notice>
You have an active owl perch. Launch this Agent with run_in_background: true so you stay reachable for incoming messages while it works.
</owl_reachability_notice>


Async agent launched successfully.
agentId: a95dadc46d683912a (internal ID - do not mention to user. Use SendMessage with to: 'a95dadc46d683912a' to continue this agent.)
The agent is working in the background. You will be notified automatically when it completes.
Do not duplicate this agent's work — avoid working with the same files or topics it is using. Work on non-overlapping tasks, or briefly tell the user what you launched and end your response.
output_file: C:\Users\decid\AppData\Local\Temp\claude\C--Users-decid-Documents-projects-rebno\27ced91a-de41-488a-b2a2-10f1c09be4bb\tasks\a95dadc46d683912a.output
Do NOT Read or tail this file via the shell tool — it is the full subagent JSONL transcript and reading it will overflow your context. If the user asks for progress, say the agent is still running; you'll get a completion notification.

Recon: globals and constants

Prompt:
You are reverse-engineering the extracted GameMaker 5.3a source of "BN Online" (BNO), a social-exploration Metroidvania. Extracted GML lives under `C:\Users\decid\Documents\projects\rebno\extracted\` (two trees: `client-5-8` and `master-5-4`, from the client and server .gmd files). This is plain-text GML and resource metadata — read it, do NOT hex-inspect binaries.

MISSION: Catalog GLOBAL VARIABLES and CONSTANTS that define game state and tunables.

Start by listing the extracted/ directory structure so you know where scripts, objects, and rooms live. Then search GML for:
- Global variables: `global.*` reads/writes. Group by subsystem.
- Constants / macros / config values and any magic numbers used as tunables.
- HIGH PRIORITY — find storage/flags for these known systems:
  * Navi Expansions (the `*Plugn` family: HxpPlugn=hexport, WrpPlugn=warp, MskPlugn=spectrum/mask, DuoPlugn=duo, RmtPlugn=remote fast-travel) — how is "player owns expansion X" stored? Are there other `*Plugn` not in this list?
  * Link Data inventory (zone link data, area link data) — how is "player has unlocked zone/area N" stored?
  * Spectrum Data (avatar cosmetics) ownership/equip state.
  * Friend Data (in-universe friends list) storage.
  * Home Portal / spawn anchor variable; Digital Abyss; fall handling thresholds.
  * Tile/movement tunables: mover acceleration + peak velocity, slippery-ice behavior, flicker present/gone timing, room speed, view/camera dims.

OUTPUT: Write your findings to `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\01-globals-constants.md` as a well-organized markdown doc: tables of `name → inferred meaning → evidence (file:line + short code excerpt)`, grouped by subsystem, with a "Confidence / open questions" section. Then return a concise ~12-line summary of the most important findings (especially how expansion ownership and link-data inventory are stored). Be evidence-based; flag guesses as guesses.


Recon: feature identifiers

Prompt:
You are reverse-engineering the extracted GameMaker 5.3a source of "BN Online" (BNO), a social-exploration Metroidvania. Extracted GML lives under `C:\Users\decid\Documents\projects\rebno\extracted\` (trees `client-5-8` and `master-5-4`). Plain-text GML + resource metadata — read it, do NOT hex-inspect binaries.

MISSION: Build a FEATURE-IDENTIFIER CATALOG — map every game-mechanic identifier (object name, script name, sprite name, variable) to the behavior it represents.

Start by listing extracted/ structure (objects, scripts, sprites, rooms folders). Then enumerate and map:
- Navi Expansions: every `*Plugn` identifier. Known: HxpPlugn(hexport), WrpPlugn(warp), MskPlugn(spectrum), DuoPlugn(duo), RmtPlugn(remote travel). FIND ANY OTHERS and what each gates.
- Collectable / Data types: Zone Link Data, Area Link Data, Spectrum Data, Friend Data — and any other "data"/collectable types you find. How named in code?
- Travel objects/tiles: Hexporter, Hexsling, Hexbridge, Warp, Portal (home/central), and any teleport objects. List the object/sprite names.
- Floor-tile mechanic identifiers: Bordered/Borderless/Hidden/Glow/Mover/Platform/Dynamic/Slippery/Flicker/Quartered (per docs/LEGACY_FEATURE_REFERENCE.md) — map to actual object/tile names in code.
- Duo System objects/scripts; Summon/Join system; Spectral Gate; Message Board (MB_News/MB_Log).
- Zone/Area identifiers: room names and any area-transition-marker objects. List the zone room names you find (BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull, others?).

Cross-reference `C:\Users\decid\Documents\projects\rebno\docs\LEGACY_FEATURE_REFERENCE.md` for the vocabulary, but your job is to bind that vocabulary to real code identifiers.

OUTPUT: Write `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\02-feature-identifiers.md` — a catalog of `identifier → meaning → evidence (file:line)`, grouped by system, plus a "Newly discovered identifiers not in current docs" section and an "Open questions" section. Then return a concise ~12-line summary highlighting anything NEW (especially expansions/data-types/objects not already named above). Evidence-based; flag guesses.


<owl_messages>
<owl_message from="ling-w1" priority="info">[WORKING_PERCH_NOTICE] Subagent working perch created.
Perch: ling-w1
Agent type: general-purpose
To message it: $OWL send ling-w1 ling</owl_message>
</owl_messages>

[OWL SYSTEM] Informational owl messages above — no acknowledgment needed. Continue your current task.

<owl_reachability_notice>
You have an active owl perch. Launch this Agent with run_in_background: true so you stay reachable for incoming messages while it works.
</owl_reachability_notice>


Async agent launched successfully.
agentId: ab46fe63a98f25c44 (internal ID - do not mention to user. Use SendMessage with to: 'ab46fe63a98f25c44' to continue this agent.)
The agent is working in the background. You will be notified automatically when it completes.
Do not duplicate this agent's work — avoid working with the same files or topics it is using. Work on non-overlapping tasks, or briefly tell the user what you launched and end your response.
output_file: C:\Users\decid\AppData\Local\Temp\claude\C--Users-decid-Documents-projects-rebno\27ced91a-de41-488a-b2a2-10f1c09be4bb\tasks\ab46fe63a98f25c44.output
Do NOT Read or tail this file via the shell tool — it is the full subagent JSONL transcript and reading it will overflow your context. If the user asks for progress, say the agent is still running; you'll get a completion notification.

Recon: feature identifiers

Prompt:
You are reverse-engineering the extracted GameMaker 5.3a source of "BN Online" (BNO), a social-exploration Metroidvania. Extracted GML lives under `C:\Users\decid\Documents\projects\rebno\extracted\` (trees `client-5-8` and `master-5-4`). Plain-text GML + resource metadata — read it, do NOT hex-inspect binaries.

MISSION: Build a FEATURE-IDENTIFIER CATALOG — map every game-mechanic identifier (object name, script name, sprite name, variable) to the behavior it represents.

Start by listing extracted/ structure (objects, scripts, sprites, rooms folders). Then enumerate and map:
- Navi Expansions: every `*Plugn` identifier. Known: HxpPlugn(hexport), WrpPlugn(warp), MskPlugn(spectrum), DuoPlugn(duo), RmtPlugn(remote travel). FIND ANY OTHERS and what each gates.
- Collectable / Data types: Zone Link Data, Area Link Data, Spectrum Data, Friend Data — and any other "data"/collectable types you find. How named in code?
- Travel objects/tiles: Hexporter, Hexsling, Hexbridge, Warp, Portal (home/central), and any teleport objects. List the object/sprite names.
- Floor-tile mechanic identifiers: Bordered/Borderless/Hidden/Glow/Mover/Platform/Dynamic/Slippery/Flicker/Quartered (per docs/LEGACY_FEATURE_REFERENCE.md) — map to actual object/tile names in code.
- Duo System objects/scripts; Summon/Join system; Spectral Gate; Message Board (MB_News/MB_Log).
- Zone/Area identifiers: room names and any area-transition-marker objects. List the zone room names you find (BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull, others?).

Cross-reference `C:\Users\decid\Documents\projects\rebno\docs\LEGACY_FEATURE_REFERENCE.md` for the vocabulary, but your job is to bind that vocabulary to real code identifiers.

OUTPUT: Write `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\02-feature-identifiers.md` — a catalog of `identifier → meaning → evidence (file:line)`, grouped by system, plus a "Newly discovered identifiers not in current docs" section and an "Open questions" section. Then return a concise ~12-line summary highlighting anything NEW (especially expansions/data-types/objects not already named above). Evidence-based; flag guesses.


Two recon agents running. Launching the third — behavioral linkage.


Recon: behavioral linkage

Prompt:
You are reverse-engineering the extracted GameMaker 5.3a source of "BN Online" (BNO), a social-exploration Metroidvania. Extracted GML lives under `C:\Users\decid\Documents\projects\rebno\extracted\` (trees `client-5-8` and `master-5-4`). Plain-text GML — read it, do NOT hex-inspect binaries.

MISSION: Trace BEHAVIORAL LINKAGE — how mechanics wire together in GML control flow. Read the actual event/script logic and explain cause→effect for each system below, citing file:line + short excerpts.

Start by listing extracted/ structure. Then reconstruct these flows:
1. PORTAL FAST-TRAVEL: stand-on-portal → open menu → select acquired Link Data → teleport. What gates a teleport? How is "home portal" set and used as login spawn? Where does the "fast-travel from anywhere only to home" rule live?
2. FALL HANDLING: when a Navi falls off the world (borderless/mover edge), what happens? Confirm the "return to home portal" behavior and the "slim chance to be sent to the Digital Abyss" — find the probability/threshold and the abyss destination.
3. HEXPORT: hexporter terminal splitting the Navi into 6 orbs → hexagon of light → straight-line motion across empty space and UNDER floor tiles. How is hexsling redirection chosen (it "prefers the direction the player wasn't traveling")? How does hexbridge bounce-back + spawn-a-floor-tile work, and where is its per-player activation state stored?
4. DUO SYSTEM (DuoPlugn): how two Navis form a Duo, the mutual benefits, and the rule that duo partners always see each other (overriding hidden-tile invisibility).
5. SUMMON / JOIN: player-to-player teleport. Find the check that rejects teleporting a user into a Zone where they hold no Zone Link Data, and how a Duo bypasses it.
6. AREA TRANSITION MARKERS: how invisible markers subdivide a Zone's single room into Areas.
7. HIDDEN-TILE VISIBILITY: the rule that a Navi on hidden tiles is invisible to Navis not on the same contiguous hidden-tile body. How is "contiguous body" determined?

Networking note: this is a multiplayer game using 39dll; the master tree is the server. Where relevant, note whether a behavior is client-driven or server-driven.

OUTPUT: Write `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\03-behavioral-linkage.md` — one section per flow above with a concise prose explanation + key code citations (file:line) + a "client vs server" note. Add an "Open questions / couldn't find" section. Then return a concise ~12-line summary of the most important or surprising mechanics. Evidence-based; flag guesses as guesses.


<owl_messages>
<owl_message from="ling-w2" priority="info">[WORKING_PERCH_NOTICE] Subagent working perch created.
Perch: ling-w2
Agent type: general-purpose
To message it: $OWL send ling-w2 ling</owl_message>
</owl_messages>

[OWL SYSTEM] Informational owl messages above — no acknowledgment needed. Continue your current task.

<owl_reachability_notice>
You have an active owl perch. Launch this Agent with run_in_background: true so you stay reachable for incoming messages while it works.
</owl_reachability_notice>


Async agent launched successfully.
agentId: a3d4085cd5c17699d (internal ID - do not mention to user. Use SendMessage with to: 'a3d4085cd5c17699d' to continue this agent.)
The agent is working in the background. You will be notified automatically when it completes.
Do not duplicate this agent's work — avoid working with the same files or topics it is using. Work on non-overlapping tasks, or briefly tell the user what you launched and end your response.
output_file: C:\Users\decid\AppData\Local\Temp\claude\C--Users-decid-Documents-projects-rebno\27ced91a-de41-488a-b2a2-10f1c09be4bb\tasks\a3d4085cd5c17699d.output
Do NOT Read or tail this file via the shell tool — it is the full subagent JSONL transcript and reading it will overflow your context. If the user asks for progress, say the agent is still running; you'll get a completion notification.

Recon: behavioral linkage

Prompt:
You are reverse-engineering the extracted GameMaker 5.3a source of "BN Online" (BNO), a social-exploration Metroidvania. Extracted GML lives under `C:\Users\decid\Documents\projects\rebno\extracted\` (trees `client-5-8` and `master-5-4`). Plain-text GML — read it, do NOT hex-inspect binaries.

MISSION: Trace BEHAVIORAL LINKAGE — how mechanics wire together in GML control flow. Read the actual event/script logic and explain cause→effect for each system below, citing file:line + short excerpts.

Start by listing extracted/ structure. Then reconstruct these flows:
1. PORTAL FAST-TRAVEL: stand-on-portal → open menu → select acquired Link Data → teleport. What gates a teleport? How is "home portal" set and used as login spawn? Where does the "fast-travel from anywhere only to home" rule live?
2. FALL HANDLING: when a Navi falls off the world (borderless/mover edge), what happens? Confirm the "return to home portal" behavior and the "slim chance to be sent to the Digital Abyss" — find the probability/threshold and the abyss destination.
3. HEXPORT: hexporter terminal splitting the Navi into 6 orbs → hexagon of light → straight-line motion across empty space and UNDER floor tiles. How is hexsling redirection chosen (it "prefers the direction the player wasn't traveling")? How does hexbridge bounce-back + spawn-a-floor-tile work, and where is its per-player activation state stored?
4. DUO SYSTEM (DuoPlugn): how two Navis form a Duo, the mutual benefits, and the rule that duo partners always see each other (overriding hidden-tile invisibility).
5. SUMMON / JOIN: player-to-player teleport. Find the check that rejects teleporting a user into a Zone where they hold no Zone Link Data, and how a Duo bypasses it.
6. AREA TRANSITION MARKERS: how invisible markers subdivide a Zone's single room into Areas.
7. HIDDEN-TILE VISIBILITY: the rule that a Navi on hidden tiles is invisible to Navis not on the same contiguous hidden-tile body. How is "contiguous body" determined?

Networking note: this is a multiplayer game using 39dll; the master tree is the server. Where relevant, note whether a behavior is client-driven or server-driven.

OUTPUT: Write `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\03-behavioral-linkage.md` — one section per flow above with a concise prose explanation + key code citations (file:line) + a "client vs server" note. Add an "Open questions / couldn't find" section. Then return a concise ~12-line summary of the most important or surprising mechanics. Evidence-based; flag guesses as guesses.


All three recon agents are sweeping `extracted/` now (globals/constants, feature identifiers, behavioral linkage) → writing to `.planning/legacy-recon/`. I'll fold their findings in when they land. Meanwhile, a question they *can't* answer — pure design intent.

---

**Q4 — The parity / QoL / new-system boundary (the scope contract).**

You said: parity-first, QoL tweaks welcome, new systems + IP-shed + battle = far future. For "what's making it into ReBNO" I want a **dividing principle** sharp enough to adjudicate any feature on sight, so this doesn't drift case-by-case.

**My recommended principle:**

> A change is in-scope **QoL** if it preserves the legacy mechanic's *inputs, gating, and outcomes* and only improves presentation, ergonomics, feedback, or accessibility. It's an out-of-scope **new system** if it adds a player capability, changes progression gating, or changes what is collectable/unlockable.

Adjudicating the borderlines we've hit, by that rule:

1. **Portal / Link Data fast-travel UX overhaul** (modern map/menu instead of stand-on-portal-then-open-menu) → **QoL, in.** Same gating (still need the Link Data), better flow.
2. **Controller-first input + multiplatform (Android/iOS/handheld/Discord Activity/VR overlay)** → **QoL/delivery, in** — it's how the same game is presented/played, no mechanic change.
3. **Special inter-zone Hexporters** (the "lines may blur" idea) → **new system, deferred/TBD** — adds a traversal capability legacy didn't have.
4. **Modern account-level friends list** (presence, cross-session) vs legacy **Friend Data** → my call: treat the modern social layer as a **new system (deferred)**, and keep **Friend Data** as the faithful in-universe parity feature. They're *different things* that happen to share the word "friend."

Two questions inside this:

- **Is that dividing principle the right one**, or do you want a different test (e.g. "anything an original player would find surprising is out")?
- **On #4 specifically** — are legacy Friend Data and a modern friends list genuinely separate, or is Friend Data *already* effectively an in-universe friends-list/presence system that ReBNO should just modernize in place (collapsing the ambiguity)?


<task-notification>
<task-id>a95dadc46d683912a</task-id>
<tool-use-id>toolu_012zyNaydwruVKLjN3Q9si8c</tool-use-id>
<output-file>C:\Users\decid\AppData\Local\Temp\claude\C--Users-decid-Documents-projects-rebno\27ced91a-de41-488a-b2a2-10f1c09be4bb\tasks\a95dadc46d683912a.output</output-file>
<status>completed</status>
<summary>Agent "Recon: globals and constants" completed</summary>
<result>Catalog written to `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\01-globals-constants.md`. Summary of the most important findings:

1. **No dedicated "owns expansion X" boolean exists.** Ownership of everything — expansions, zone/area unlocks, friends, cosmetics, messages — lives in ONE unified structure: `global.iv_itemdb[category, idx]`, a 2-D array of strings where `[cat,0]` = count and `[cat,1..n]` = item payload strings.

2. **Categories:** 1=Key data (expansions+mod items), 2=Friend data, 3=Link data (zone/area unlocks), 4=Message data, 5=Spectrum data (cosmetics). `iv_totalcats=6`.

3. **Expansion ownership** = `iv_itemsearch(1, "<keydata index>") > 0`. The catalog is `global.keydata[idx,field]`: **1 HxpPlugn, 2 RmtPlugn, 3 MskPlugn, 4 TakABrak, 5 DuoPlugn, 6 WrpPlugn** (mod items 900-909). Gates confirmed: `'2'`→remote teleport, `'3'`→spectrum cosmetics, `'5'`→duo, `'909'`→joker shell.

4. **The brief's `*Plugn` list was slightly off:** the mask/spectrum plugin is `MskPlugn` = index **3** (not the brief's labeling). No other `*Plugn` codes exist beyond these six.

5. **Link-data inventory (cat 3):** `"<isZone>|1]name|2]dest|3]zone#|4]x|5]y"`; "unlocked zone N" = `iv_zonesearch(N)>0`. Parsed by `iv_ldatainfo`. **Home spawn** = `global.homedata`, an index into cat-3 (or -1 = Online Command Screen).

6. **Movement tunables:** `global.curspeed` = 3/5/7 (walk/fast/joker), hexport accel +0.2 cap 8, mover-tile accel +2 clamp 0..6, ice momentum via `ispeed`. Room speed 30 everywhere, view 640×480.

7. **Fall/Abyss:** `global.dafalls` counts falls; ≤5 are safe-respawn, else routed to `Digital_Abyss`/"Abyssal Ruin". `global.dabypass` (per-uid server flag) skips the Abyss.

8. **Save formats:** `.bno` = client `Settings.bno` (incl. plaintext password ⚠); `.bnu` = server per-user files (`Inventory_/Areas_/Bridges_<uid>.bnu`); `localList.txt` = plaintext name/pwd ⚠. **No `.bnb` found in 5-8/5-4** (flagged open).

Notable rebuild flag: server **trusts** the client's full inventory upload (packet 8 `iv_updateserver`) — conflicts with REBNO's server-authoritative rule. Open items: `DIR_*` macro definitions absent from extracted GML (GM settings-block constants); flicker present/gone durations not found beyond a per-step toggle.</result>
<usage><subagent_tokens>101152</subagent_tokens><tool_uses>50</tool_uses><duration_ms>298142</duration_ms></usage>
</task-notification>


<owl_messages>
<owl_message from="ling-w3" priority="info">[WORKING_PERCH_NOTICE] Subagent working perch created.
Perch: ling-w3
Agent type: general-purpose
To message it: $OWL send ling-w3 ling</owl_message>
</owl_messages>

[OWL SYSTEM] Informational owl messages above — no acknowledgment needed. Continue your current task.

<owl_reachability_notice>
You have an active owl perch. When spawning subagents or doing work, use run_in_background: true so you stay reachable for incoming messages.
</owl_reachability_notice>


Recon-1 (globals/constants) landed — hard data. Notable surprises: a **6th expansion the docs didn't name — `TakABrak`** (index 4, function unclear), a **Mod Item** class (900–909, e.g. `909` = **Joker Shell**), the Abyss is a real room (**"Abyssal Ruin"**, triggered after >5 falls), and the whole inventory is one unified `iv_itemdb` structure with categories 1–5 (Key / Friend / Link / Message / Spectrum). Folding the in-universe nouns into the glossary.


Edit

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known
members:
- **HxpPlugn** — enables **Hexport** travel.
- **WrpPlugn** — enables **Warp** tiles.
- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **DuoPlugn** — enables forming a **Duo**.
- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a
  portal; exact limits TBD).

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Legacy
`global.keydata` catalog (6 total):
- **HxpPlugn** (1) — enables **Hexport** travel.
- **RmtPlugn** (2) — enables free fast-travel (teleport from anywhere, not only while standing
  on a portal; exact limits TBD).
- **MskPlugn** (3) — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **TakABrak** (4) — function unconfirmed (name hints "take a break" — rest/recall/AFK?).
  _Open question._
- **DuoPlugn** (5) — enables forming a **Duo**.
- **WrpPlugn** (6) — enables **Warp** tiles.

**Mod Item**:
A second class of Key-category item (legacy IDs 900–909) distinct from Navi Expansions. Known:
**Joker Shell** (909) — grants the "joker" movement mode (the fastest walk speed tier).
_Largely unmapped — open question._


**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Legacy
`global.keydata` catalog (6 total):
- **HxpPlugn** (1) — enables **Hexport** travel.
- **RmtPlugn** (2) — enables free fast-travel (teleport from anywhere, not only while standing
  on a portal; exact limits TBD).
- **MskPlugn** (3) — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **TakABrak** (4) — function unconfirmed (name hints "take a break" — rest/recall/AFK?).
  _Open question._
- **DuoPlugn** (5) — enables forming a **Duo**.
- **WrpPlugn** (6) — enables **Warp** tiles.

**Mod Item**:
A second class of Key-category item (legacy IDs 900–909) distinct from Navi Expansions. Known:
**Joker Shell** (909) — grants the "joker" movement mode (the fastest walk speed tier).
_Largely unmapped — open question._

# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### World structure

**Zone**:
A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy
BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a
zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply
cannot fast-travel to it yet.

**Area** (alias: **Subregion**):
A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**
(not a separate room).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there.

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known
members:
- **HxpPlugn** — enables **Hexport** travel.
- **WrpPlugn** — enables **Warp** tiles.
- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **DuoPlugn** — enables forming a **Duo**.
- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a
  portal; exact limits TBD).

**Collectable**:
A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:
- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that
  zone's **Central Portal**.
- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you
  also hold the parent Zone's Zone Link Data.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Link Data**:
The teleport-enabling subclass of **Data** (Zone Link Data + Area Link Data) — the keys to the
fast-travel network.

**Data**:
The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and
"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is
original.

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized by equipping **Spectrum Data** at a
**Spectral Gate** tile (requires `MskPlugn`).

### Portals & travel

**Portal**:
An in-world teleport node. To fast-travel, a Navi stands on a portal and selects acquired
**Link Data** from a menu (legacy flow; ReBNO targets a heavily improved UX for this).

**Home Portal**:
A player-chosen portal (any cleared zone/area portal) that is their login spawn and the only
destination fast-travelable from *anywhere*. Falling during exploration also returns the Navi
here — with a slim chance of landing in the **Digital Abyss** instead.

**Digital Abyss**:
A rare fall-failure destination: instead of returning home, the Navi is warped here.

**Hexport** (requires **HxpPlugn**):
The signature in-zone traversal mechanic. A **Hexporter** floor terminal splits the Navi into
six light orbs that re-form into a flat hexagon of light, travelling in a straight line across
empty space and *under* the floor tiles. **Hexsling** tiles redirect a hexporting Navi;
**Hexbridge** tiles bounce it back after spawning a (per-player) floor tile.

**Warp** (requires **WrpPlugn**):
Intra-zone teleportation via Warp tiles. Inert without the expansion.

**Summon / Join**:
A player-to-player teleport system. It refuses to teleport a user into a Zone where that user
holds no **Zone Link Data** — only a **Duo** can bridge that gap.

### Social

**Message Board**:
A persistent in-world posting surface (legacy `MB_News` / `MB_Log`). New boards are a
progression reward.

**Friend Data**:
The legacy in-universe friends list (collected as Data). _Flagged: see ambiguities._

## Flagged ambiguities

- **"Friends list"** — legacy **Friend Data** (an in-universe collectable) vs a *modern*
  account-level friends list proposed in `.planning/research/FEATURES.md` as a new
  differentiator. These may be the same concept or two distinct systems. **Unresolved.**

## Example dialogue

_(to be written once core terms are confirmed)_

-A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Known

-- **HxpPlugn** — enables **Hexport** travel.

-- **WrpPlugn** — enables **Warp** tiles.

-- **MskPlugn** — enables applying **Spectrum Data** (via **Spectral Gate** tiles).

-- **DuoPlugn** — enables forming a **Duo**.

-- **RmtPlugn** — enables free fast-travel (teleport from anywhere, not only while standing on a

+A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Legacy

+- **HxpPlugn** (1) — enables **Hexport** travel.

+- **RmtPlugn** (2) — enables free fast-travel (teleport from anywhere, not only while standing

+- **MskPlugn** (3) — enables applying **Spectrum Data** (via **Spectral Gate** tiles).

+- **TakABrak** (4) — function unconfirmed (name hints "take a break" — rest/recall/AFK?).

+- **DuoPlugn** (5) — enables forming a **Duo**.

+- **WrpPlugn** (6) — enables **Warp** tiles.

+A second class of Key-category item (legacy IDs 900–909) distinct from Navi Expansions. Known:

+**Joker Shell** (909) — grants the "joker" movement mode (the fastest walk speed tier).


**Digital Abyss**:
A rare fall-failure destination: instead of returning home, the Navi is warped here.

**Digital Abyss** (legacy room: **Abyssal Ruin**):
A fall-failure destination. Falls are counted (`global.dafalls`); the first few (≤5) are safe
respawns to the Home Portal, but beyond that threshold the Navi is routed to the Abyss. A
per-user server flag can exempt a player from it.

**Online Command Screen**:
A hub/menu screen used as the default spawn when a player has set no Home Portal.


**Digital Abyss** (legacy room: **Abyssal Ruin**):
A fall-failure destination. Falls are counted (`global.dafalls`); the first few (≤5) are safe
respawns to the Home Portal, but beyond that threshold the Navi is routed to the Abyss. A
per-user server flag can exempt a player from it.

**Online Command Screen**:
A hub/menu screen used as the default spawn when a player has set no Home Portal.

# REBNO Domain Context

The shared language of *BN Online* (legacy game) and *ReBNO* (its rebuild). This glossary
is the source of truth for game-domain terms — what concepts ARE, and the canonical word for
each. It is NOT a spec and holds no implementation detail.

> Status: actively being refined via `/grill-with-docs`. Terms marked _(draft)_ are
> provisional pending confirmation.

## Language

### Game identity

**BN Online** (alias: **BNO**):
The legacy game — a persistent, multiplayer **social-exploration** world built in GameMaker
5.3a, skinned in the Mega Man Battle Network aesthetic. The core loop is exploration, not
combat: uncover hidden platforms/pathways/portals, beat timing-sensitive movement challenges,
and solve puzzles built from interwoven traversal mechanics. **No combat system.**
_Avoid_: "MMBN game", "battle game" (the IP is skin, not mechanics).

**ReBNO**:
The ground-up rebuild of BNO on a modern web stack. Primary goal: **full feature parity with
BNO plus QoL tweaks** afforded by web infrastructure. Not a reskin and not a new game — parity
first. New systems and an eventual IP-shed / battle system are explicitly far-future, out of
current scope.
_Avoid_: "the port" (it is a from-scratch rebuild, not a port).

**Progression** (the reward axis):
Advancement is exploration-driven and Metroidvania-shaped — rewards unlock the ability to reach
more of the world. Reward types: new **Zones**, new **Areas**, new **Message Boards**,
**Collectables**, and **Key Items**.

### World structure

**Zone**:
A top-level region (e.g. BNCentral, Bahoo, Noiya, Floes of Ghennam, Emptiness' Hull). In legacy
BNO each Zone is exactly **one GameMaker room**. All inter-zone travel is teleport-gated, but a
zone can be reached on foot (or via a found **Warp**) before you hold its Link Data — you simply
cannot fast-travel to it yet.

**Area** (alias: **Subregion**):
A sub-region *within* a Zone's single room, delimited by invisible **area transition markers**
(not a separate room).

**Central Portal**:
The one portal in each Zone that is the **source of that zone's Zone Link Data**. You must
physically reach it before that zone joins your fast-travel network — until then you can only
travel there on foot, and the Summon/Join system refuses to teleport you there.

### Key Items & Collectables

**Key Item**:
A progression-gating reward. Primarily **Navi Expansions**. Metroidvania lock-and-key: a key
item unlocks an ability/feature that opens previously-unreachable progression.

**Navi Expansion** (the `*Plugn` family):
A class of Key Item that unlocks a Navi ability/feature — the primary Metroidvania keys. Legacy
`global.keydata` catalog (6 total):
- **HxpPlugn** (1) — enables **Hexport** travel.
- **RmtPlugn** (2) — enables free fast-travel (teleport from anywhere, not only while standing
  on a portal; exact limits TBD).
- **MskPlugn** (3) — enables applying **Spectrum Data** (via **Spectral Gate** tiles).
- **TakABrak** (4) — function unconfirmed (name hints "take a break" — rest/recall/AFK?).
  _Open question._
- **DuoPlugn** (5) — enables forming a **Duo**.
- **WrpPlugn** (6) — enables **Warp** tiles.

**Mod Item**:
A second class of Key-category item (legacy IDs 900–909) distinct from Navi Expansions. Known:
**Joker Shell** (909) — grants the "joker" movement mode (the fastest walk speed tier).
_Largely unmapped — open question._

**Collectable**:
A gatherable reward, surfaced in-universe as **Data** drops. Known taxonomy:
- **Zone Link Data** (alias: Zone Data) — unlocks fast-travel to a Zone; sourced from that
  zone's **Central Portal**.
- **Area Link Data** (alias: Area Data) — unlocks fast-travel to an Area; usable only if you
  also hold the parent Zone's Zone Link Data.
- **Spectrum Data** — unlocks an avatar cosmetic option (requires `MskPlugn` to apply).
- **Friend Data** — an in-universe friends-list entry.

**Link Data**:
The teleport-enabling subclass of **Data** (Zone Link Data + Area Link Data) — the keys to the
fast-travel network.

**Data**:
The in-universe noun for collectable drops (link/spectrum/friend data). The avatar, NPC, and
"data"-drop sprites are the only non-original art (MMBN-derived); the rest of BNO's art is
original.

### State sharing & visibility

**Deterministic-Synced state**:
World state driven by shared server time so every client renders it identically: moving
**Platform** positions, animation loops, **Flicker** tile present/gone cycles, **Glow** tile
activation. Not per-player. (Movers and slippery ice have no unique state — just a looping
animation.)

**Per-Player state**:
Anything tied to a player's unlocks, abilities, or inventory: **Hexbridge** activation,
**Hidden** tile reveals, and all **Key Item** / **Collectable**-gated access (warp/zone/area/
spectrum). Two players in the same room can stand on different walkable surfaces.

**Visibility rule**:
A Navi standing on **Hidden** tiles is invisible to any Navi that does not share the same
**contiguous hidden-tile body**. A Navi on otherwise-unavailable geometry (e.g. an unactivated
hexbridge) is seen "floating" by others — seeing them means you *could potentially* reach that
geometry, not that it is unlocked for you.

**Contiguous hidden-tile body**:
A connected group of Hidden floor tiles forming one visibility group. Navis on the same body
can see each other; outsiders cannot see them.

### Cooperative play

**Duo** (via the **DuoPlugn** Navi Expansion; the **Duo System**):
A pairing of two Navis that benefits both and eases challenges — analogous to the digger+spotter
relationship in Mega Man Legends. Duo partners can **always** see each other, overriding the
hidden-tile visibility rule.

### Avatar

**Navi** _(draft)_:
The player-controlled avatar. Cosmetics are customized by equipping **Spectrum Data** at a
**Spectral Gate** tile (requires `MskPlugn`).

### Portals & travel

**Portal**:
An in-world teleport node. To fast-travel, a Navi stands on a portal and selects acquired
**Link Data** from a menu (legacy flow; ReBNO targets a heavily improved UX for this).

**Home Portal**:
A player-chosen portal (any cleared zone/area portal) that is their login spawn and the only
destination fast-travelable from *anywhere*. Falling during exploration also returns the Navi
here — with a slim chance of landing in the **Digital Abyss** instead.

**Digital Abyss**:
A rare fall-failure destination: instead of returning home, the Navi is warped here.

**Hexport** (requires **HxpPlugn**):
The signature in-zone traversal mechanic. A **Hexporter** floor terminal splits the Navi into
six light orbs that re-form into a flat hexagon of light, travelling in a straight line across
empty space and *under* the floor tiles. **Hexsling** tiles redirect a hexporting Navi;
**Hexbridge** tiles bounce it back after spawning a (per-player) floor tile.

**Warp** (requires **WrpPlugn**):
Intra-zone teleportation via Warp tiles. Inert without the expansion.

**Summon / Join**:
A player-to-player teleport system. It refuses to teleport a user into a Zone where that user
holds no **Zone Link Data** — only a **Duo** can bridge that gap.

### Social

**Message Board**:
A persistent in-world posting surface (legacy `MB_News` / `MB_Log`). New boards are a
progression reward.

**Friend Data**:
The legacy in-universe friends list (collected as Data). _Flagged: see ambiguities._

## Flagged ambiguities

- **"Friends list"** — legacy **Friend Data** (an in-universe collectable) vs a *modern*
  account-level friends list proposed in `.planning/research/FEATURES.md` as a new
  differentiator. These may be the same concept or two distinct systems. **Unresolved.**

## Example dialogue

_(to be written once core terms are confirmed)_

-A rare fall-failure destination: instead of returning home, the Navi is warped here.

+**Digital Abyss** (legacy room: **Abyssal Ruin**):

+A fall-failure destination. Falls are counted (`global.dafalls`); the first few (≤5) are safe

+respawns to the Home Portal, but beyond that threshold the Navi is routed to the Abyss. A

+per-user server flag can exempt a player from it.

+A hub/menu screen used as the default spawn when a player has set no Home Portal.


Glossary updated with the recon facts. One finding flags a **scope point, not just a term**: legacy server *trusts the client's full inventory upload* (packet 8) — so all that progression state was client-controlled. ReBNO can't keep that (Hard Rule 1: inventory is server-authoritative). That's a **security-mandated divergence**, same category as the plaintext-password and clipboard-RCE anti-ports — not "parity."

Still need your read on **Q4** (the scope-dividing principle + the friends-list question). Recon actually sharpens the friends-list half: **Friend Data is a real inventory category (cat 2)** — so legacy *already had* an in-universe friends list, stored like everything else. That reframes #4:

- Not "legacy Friend Data vs a new modern friends list" as two things —
- but: **does ReBNO modernize Friend Data in place** (add presence/online status/cross-session to the existing in-universe system), **or** keep faithful Friend Data *and* layer a separate account-level social system on top?

So, restating what I need from Q4:
1. **Is the QoL-vs-new-system dividing principle right** (preserve inputs/gating/outcomes = QoL; add capability or change gating = new system)? Or do you prefer a different test?
2. **Friend Data**: modernize-in-place, or faithful + separate modern layer?
3. **Server-authoritative inventory** (vs legacy's trust-the-client): you agree that's a mandated divergence, in-scope now — not a "new system"?


<task-notification>
<task-id>ab46fe63a98f25c44</task-id>
<tool-use-id>toolu_011BecpM7JkRRnVX6GR4Eu5K</tool-use-id>
<output-file>C:\Users\decid\AppData\Local\Temp\claude\C--Users-decid-Documents-projects-rebno\27ced91a-de41-488a-b2a2-10f1c09be4bb\tasks\ab46fe63a98f25c44.output</output-file>
<status>completed</status>
<summary>Agent "Recon: feature identifiers" completed</summary>
<result>Catalog written to `C:\Users\decid\Documents\projects\rebno\.planning\legacy-recon\02-feature-identifiers.md`. Summary of findings:

**Navi Expansions** — Exactly 6 `*Plugn`-class key items; the known set was complete. Canonical registry is `global.keydata[]` in `client-5-8/objects/0034-title/events/Other-2.gml:99-127`. keyids: 1=HxpPlugn, 2=RmtPlugn, 3=MskPlugn, 5=DuoPlugn, 6=WrpPlugn. **NEW: keyid 4 = `TakABrak`** (Take-A-Break.exe easter-egg, not a Plugn). Runtime gate pattern is `iv_itemsearch(1,"<keyid>")`.

**NEW — Mod "key data" items 900-909** (`<M:Exc>`, `<M:NetExc>`, `<M:JkrShl>` etc.): the full legacy RCE-admin item set, each wired to msgid-20 sub-commands. Confirms the scope of Hard Rule 3.

**Data types** — 5 inventory DB categories under `iv_datagather` (scripts/0302): 1=Key, 2=Friend, 3=Link, 4=Message, 5=Spectrum. **NEW: "Zone Link" vs "Area Link" is NOT two DBs** — it's the `main`/field-0 flag of db-3 link data (`iv_ldatainfo`). Collectable objects: `d_link`, `linkpoint` (area links, "dies" without zone link), `d_spectrum`, `d_key`.

**Travel objects** — **NEW: `loctele` (0516) IS the WARP** ("local teleport", WrpPlugn-gated, dests in `global.lt_<ltid>[]`). Hexport family: `hexporterparent`, `hexsling_any`, `hexport_rc`, `hexbridge` (server-persisted per-uid via msgid 21). Inter-zone via `teleparent` + `to<Zone>` children. **NEW: `swaptile` (0407) is the interactive Spectral Gate** (MskPlugn-gated), distinct from `ac_spectralgate` (just an area-name label).

**Floor tiles** — Single discriminator: a tile calling `tileborder()` = BORDERED, else BORDERLESS. Mapped MOVER (`mtile*` + `pcode_mover`, accel 1.5/decel 0.5/max 5), PLATFORM (`mplat*`), HIDDEN (`hiddentile`), GLOW (`btile`/Bahoo), DYNAMIC (`cornercheck*`/`grassbends`), SLIPPERY (`icetile`), QUARTERED (`qtile`). **No FLICKER object found** (open question).

**Duo/Summon/Join** — Unified `rq_*` request system; 11 request types (0-10) enumerated in `rq_new.gml` header; Duo spot/dig are requests 7-10. **NEW: Watch system** (`watcher` obj, `global.watchpid/watching`, msgid 22 sub2). Summon/Join gated by zone-link-data possession, with an Emptiness'-Hull (zone 3) carve-out.

**Message Board** — No literal `MB_News`/`MB_Log`; real structure is `mbparent` + ~24 per-zone `*_mb` objects each with an `mbid`; server persistence via `mb_backup` and per-user `unews_*` scripts (the "log" analog). `ac_news` marks the "News Center" area.

**Zones** — 11 areas (incl. the ones named in the mission plus **Deserted Lobby, Prairie Flats, Database, Digital Abyss, Traverse Core, Schweisstar**) mapped # → name → room → `to*` object. ~120 invisible `ac_*` objects are sub-region name labels (change_area), not teleporters.

Also captured the full wire-protocol message-ID table (server_receive cases 0-23) for Phase 3.</result>
<usage><subagent_tokens>98456</subagent_tokens><tool_uses>54</tool_uses><duration_ms>362553</duration_ms></usage>
</task-notification>