docs(rust): the map's monument labels as built (PLAN_REDESIGNS §4.1, D196)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -5,7 +5,8 @@ On 2026-09-28 the org lead added the first-class optional plugins (§11, D199–
|
|||||||
It is step 3 of [`PLAN_FIXES.md`](PLAN_FIXES.md) §6: the six changes the org lead decided during the first
|
It is step 3 of [`PLAN_FIXES.md`](PLAN_FIXES.md) §6: the six changes the org lead decided during the first
|
||||||
player walk, each "planned in detail before code". The org lead asked for all six in one plan (2026-09-27), so
|
player walk, each "planned in detail before code". The org lead asked for all six in one plan (2026-09-27), so
|
||||||
they can be read together. **Built so far:** §1, walked 2026-09-28 (§1.9); §5, built 2026-09-28 with its
|
they can be read together. **Built so far:** §1, walked 2026-09-28 (§1.9); §5, built 2026-09-28 with its
|
||||||
rig walk still to come (§5.8, D209).
|
rig walk still to come (§5.8, D209); §3, built and walked on the rigs and the site 2026-09-29, its in-game
|
||||||
|
rows still to come (§3.4); §4, built 2026-09-29 (§4.1).
|
||||||
|
|
||||||
This is a companion to [`PLAN_FIXES.md`](PLAN_FIXES.md) and [`PLAN.md`](PLAN.md). Where they disagree, this
|
This is a companion to [`PLAN_FIXES.md`](PLAN_FIXES.md) and [`PLAN.md`](PLAN.md). Where they disagree, this
|
||||||
document is later and wins. Its decisions continue PLAN_FIXES' numbering at **D188**.
|
document is later and wins. Its decisions continue PLAN_FIXES' numbering at **D188**.
|
||||||
@@ -558,6 +559,39 @@ so the site refuses it until protocol 13 ships:
|
|||||||
- **Not chosen:** the game's own `MonumentType` (§0.7), sent by the plugin. It is authoritative, but it is a
|
- **Not chosen:** the game's own `MonumentType` (§0.7), sent by the plugin. It is authoritative, but it is a
|
||||||
wire change, and nothing yet shows that substations are a type of their own.
|
wire change, and nothing yet shows that substations are a type of their own.
|
||||||
|
|
||||||
|
### 4.1 As built (2026-09-29; Module-Rust only, no wire change)
|
||||||
|
|
||||||
|
- **Storage.** One row per label, `on` or `off`: the fleet's in `rust_settings` as `map.marker.<key>`, a
|
||||||
|
server's in `rust_map_overrides` under the same setting name. No schema change. The key is the label
|
||||||
|
trimmed, single-spaced and lower case, because the game is not consistent: the rig's map says
|
||||||
|
`jungle swamp` for `ue_jungle_swamp_a`. Both columns are `VARCHAR(64)`, so a label longer than 53
|
||||||
|
characters cannot carry a switch and the write says so. A stored word that is neither `on` nor `off`
|
||||||
|
follows the default above it. Unlike a layer audience, this does not narrow, because a label switch is
|
||||||
|
clutter control and not a security boundary. The world layer's audience still decides whether a viewer
|
||||||
|
gets monuments at all.
|
||||||
|
- **Precedence.** A server's switch wins over the fleet's, and the fleet's over the built-in list, label by
|
||||||
|
label. Setting the fleet back to what the built-in list says deletes the row instead of storing a copy,
|
||||||
|
so a later change to the list reaches that label.
|
||||||
|
- **The built-in list** (`MINOR_LABELS`, off by default): Substation, Underground Cave, Train Tunnel, Water
|
||||||
|
Well, Wild Swamp, Jungle Swamp, Ice Lake, Jungle Ruin, Fishing Village, Large Barn, Abandoned
|
||||||
|
Supermarket, **Oxum's Gas Station, Mining Outpost, Ranch**. The first eleven are spelled as the rigs'
|
||||||
|
map (world 3000, seed 1234) labels them. The last three are not on that map, and their spellings are
|
||||||
|
Rust's display names, **not read from a rig**. If one is wrong, that monument is drawn. That is the side
|
||||||
|
the rule fails on, and the admin can still hide it by hand. *Large* Fishing Village is a separate label
|
||||||
|
and stays on.
|
||||||
|
- **Where it is applied.** `GET /public/rust/servers/:id/map` leaves out every monument whose label is
|
||||||
|
hidden on that server. The website and the Android app read the same answer, so both lose the markers
|
||||||
|
with no client change. `map.access()` carries the merged switches. Event steps that name a monument
|
||||||
|
(`world.monuments`) are untouched: an event can still be placed at a substation that the map hides.
|
||||||
|
- **Admin → Rust visibility, the live map card.** Under the fleet layer switches, **Monuments on the map**
|
||||||
|
is a collapsed list with a checkbox for each label found on any server's current map plus the built-in
|
||||||
|
list (a minor label no map has yet is still listed, so it can be decided before a wipe brings it). Each
|
||||||
|
server row has its own collapsed **Monuments** list of the labels on its current map, each set to
|
||||||
|
*Default (drawn/hidden)*, *Drawn* or *Hidden*. The page's one `PUT` carries `map.fleet.markers` and
|
||||||
|
`map.servers.<id>.markers`, each `{ key: true | false | null }`. `null` clears the switch.
|
||||||
|
- **Tests:** 6 server (`map.test.js`) and 7 client (`mapMarkers.test.js`, the page's pure half) — 461 and
|
||||||
|
65 in all.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Chat titles: twenty-three conditions (§4.6; D172–D175)
|
## 5. Chat titles: twenty-three conditions (§4.6; D172–D175)
|
||||||
|
|||||||
Reference in New Issue
Block a user