docs(runicnpc): 9e step 1 — dome stack 3 and the PopupNotifications banner (D326-D328)
D326: a blank dome stack is 3 (module only; the wire still defaults to 1). D327: the recommended PopupNotifications banner ships as a paste block (rust-link/INTEGRATION.md §2.4), from the installer (install and update) and from the egg's install. D328: "at the plugin's defaults" is all or nothing. PLAN_REDESIGNS §3's "until it is chosen by eye" closes; rust-link/INSTALL.md says what the installer and the egg write, and that uninstall leaves it. Code: Module-Rust#36, installer#39, Rust-Link#22. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -148,6 +148,9 @@ architectural or design decision is implemented.
|
||||
| **D323** | **Each example profile wears its own outfit; the weapons of D289 stay.** The raider wears scrap armour (coffee-can helmet, roadsign jacket and kilt, hoodie, pants, boots, leather gloves); the camp guard metal (metal facemask and chest plate, long-sleeve shirt, pants, boots, roadsign gloves); the sniper hide (boonie hat, balaclava, hide poncho, pants and boots); the Juggernaut heavy plate, as before. Three shared one hoodie, pants and boots, so they read alike in game. Only a first load writes them (D284): no live server has RunicNPC yet, and the test rigs were given them by resetting `examplesWritten` (9d player walk, 2026-10-09). | One outfit for all; replacing a server's kits that still match the old ones. |
|
||||
| **D324** | **An example kit's items are written at full durability, read from this Rust's item definitions when the kits are written.** Kits sets an item's condition and maximum straight from its file. The writer put 0 on armour (a metal facemask 0 of 320, heavy plate 0 of 1,000, so it barely protected) and 100 on every weapon whatever its real maximum (an M249's is 500). Now an item with a condition gets the definition's maximum and one without gets 0. The harness checks it (`s6.examples.fullCondition`). | A fixed table of maximums, which a Rust update would make stale. |
|
||||
| **D325** | **`/rnpc here` stands the NPC 1 m in front of the admin, facing them, not at their feet.** At their feet it spawned inside the admin, looking away (9d player walk). The spot must fit: nothing at chest height in the way, ground no more than 2 m below, and navmesh for one that walks. Otherwise it falls back to the admin's own spot and the reply says so. The harness checks the distance (`cmd.chat.here`). | 1.5 m or 3 m in front; refusing when the spot does not fit. |
|
||||
| **D326** | **An event zone's dome stacks 3 spheres when its step leaves the stack blank, not 1.** The org lead chose it by eye at noon in the 9d player session. It changes in `module-rust` only, so steps saved with a blank stack draw 3 from their next run. The wire is unchanged: the bridge still gives a `dome` sent without a `stack` 1, and the module always sends one (2026-10-09). | The bridge's default too, which changes a message's meaning and needs a plugin release. |
|
||||
| **D327** | **A recommended PopupNotifications look ships three ways:** a banner across the top of the screen (left 0.15, bottom 0.87, width 0.7, height 0.07, spacing 0.005), no close button, Roboto Condensed Bold at 18, panel transparency 0.8. It is a block to paste in `rust-link/INTEGRATION.md` §2.4, and both the installer (`install` and `update`) and the Pterodactyl egg's install write it. Each writes it with PopupNotifications' `Version`, because the plugin resets a config without one. PopupNotifications stays optional and is the operator's to install (D141). The org lead: whether `update` also writes it "does not matter", since no host outside the test rigs is installed yet. | Writing it on a first install only; writing it once per host and recording that. |
|
||||
| **D328** | **"Still at the plugin's defaults" means every setting, all or nothing.** The installer and the egg write the banner only where `PopupNotifications.json` is missing, or where every setting equals PopupNotifications 0.2.1's own defaults (its `Version` aside; numbers compared as numbers). A config with any one setting changed, or one that does not parse, is kept whole and never merged into. | Field by field: our values only where that one field is still at its default, which mixes two looks nobody chose. |
|
||||
|
||||
**Borrowing, not copying.** NpcSpawn states no licence at all, so its source grants us nothing and is read only as a
|
||||
description of *what* can be done in Rust. HumanNPC is MIT on uMod, which is GPL-compatible, but §1.2 rules out its
|
||||
@@ -1825,6 +1828,23 @@ put three steps in 9e, in this order (2026-10-09), each ending in its PRs:
|
||||
`module-rust` `edge` → `main` with RunicNPC required. Each release is checked (checksums, the bundle composing)
|
||||
before the next merge. The row the walk left for it: the installer's RunicNPC path from a real bundle.
|
||||
|
||||
**9e step 1, as built (2026-10-09; D326–D328).** Before building, the org lead answered three questions. The dome change
|
||||
is in the module only. "At defaults" means all settings or none. Whether `update` also writes the banner "does not matter",
|
||||
since no host outside the test rigs is installed yet, so both verbs apply the rule.
|
||||
|
||||
- **Dome stack 3:** Module-Rust#36. A blank stack sends 3, and the field's hint says so. 505/505 tests pass.
|
||||
- **The banner, three ways:** the paste block in `rust-link/INTEGRATION.md` §2.4; installer#39 (`popup.rs`; a
|
||||
`popup look` row in the plan; `install` and `update`; 188 tests pass, 5 of them new); Rust-Link#22 (`rg_popup` in
|
||||
`egg/install.sh`; a failure there is said in the console and does not fail the install). Both write PopupNotifications'
|
||||
`Version`, because the plugin resets a config without one, and keep a later version they find.
|
||||
- **How it was checked:**
|
||||
- **The installer:** run against two scratch roots. No published bundle carries RunicNPC yet, so the run bypassed its
|
||||
check in the working tree only. Oxide with no config got the banner. Carbon at the rig's defaults got the walk's
|
||||
banner file exactly. On `update`, a hand-changed config and an existing banner were both kept.
|
||||
- **The egg's function:** run in `ghcr.io/ptero-eggs/installers:debian` over the same cases, plus a config that is
|
||||
not JSON and a directory that cannot be made.
|
||||
- **Left for step 3:** both paths from a real bundle (the installer on a rig, the egg by a panel reinstall).
|
||||
|
||||
**Then the Rust plan resumes** at PLAN_REDESIGNS §9 item 6 (the step editor and the kit weekend) and §11.
|
||||
|
||||
### Stage 10 — Custom navigation (only if needed)
|
||||
|
||||
Reference in New Issue
Block a user