docs(runicnpc): stage 9b built; INSTALL and COMMANDS; RunicNPC required (D315, D316)
- runicnpc/PLAN.md: 9b built and measured; D315 (the performance check records today's cost, the warning says it, idle overhead is runicnpc-rust#13) and D316 (the picker keeps Rust's own; a step on a server without RunicNPC is refused on save). - runicnpc/INSTALL.md (new): requirements, the installer and egg, by hand without Runic Gateway, Kits and ZoneManager reported not installed, its files, the cost warning with stage 9's numbers, caps, and after a Rust update. - runicnpc/COMMANDS.md (new): every /rnpc verb and console command with its permission, options and defaults, and how to read rnpc.status. - rust-link/INSTALL.md: RunicNPC is required; the installer refuses a bundle without it and doctor fails. (The plan named modules/rust/OPERATING.md, which is a verbatim uMod mirror; this is the operator guide that lists Kits.) - rust-link/PROTOCOL.md: §19.16, every NPC placement needs RunicNPC; no message changes shape. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -2401,8 +2401,9 @@ in-game rows (flags on a player, the messages) wait for the later in-game walk.
|
||||
RunicNPC is Runic Gateway's own NPC plugin ([`../runicnpc/PLAN.md`](../runicnpc/PLAN.md), [`API.md`](../runicnpc/API.md)).
|
||||
**The bridge is its only link to the site**: it calls RunicNPC's API for the site's commands and turns
|
||||
RunicNPC's hooks into frames, and RunicNPC never talks to the sidecar, so "the sidecar is a dumb forwarder"
|
||||
stays true. RunicNPC is optional until its stage 9. Without it every `npc.*` command answers `npc.error`
|
||||
**`runicnpc-missing`**, and an event places Rust's own scientists only (D243).
|
||||
stays true. Without it every `npc.*` command answers `npc.error` **`runicnpc-missing`**. Until its stage 9 an
|
||||
event then placed Rust's own scientists only (D243); since stage 9 RunicNPC is required, and an event places no
|
||||
NPCs at all without it (§19.16).
|
||||
|
||||
The bridge needs **RunicNPC API 3** (D249), `RunicNpcApiNeeded` in the code and **`runicnpc_api = 3` in
|
||||
`overlay.toml`**, which the release copies into its manifest and `checkPlugin.js` holds equal to the code.
|
||||
@@ -2614,3 +2615,19 @@ Stage 7's wire change **joins protocol 13** while it is unreleased (D299); no me
|
||||
`false` spawns the NPCs with RunicNPC's override `{"loot":{"dropTable":false}}`: they keep what their profile
|
||||
starts the corpse with, and roll no loot table. Absent or `true`, as before. The site sends it only when an event's
|
||||
Place NPCs step switches it off.
|
||||
|
||||
### 19.16 RunicNPC stage 9: RunicNPC is required (runicnpc PLAN.md stage 9)
|
||||
|
||||
**No message changes shape**, and `PROTOCOL_VERSION` stays 13. What changes is which `world.place` the bridge
|
||||
refuses (D310): **every placement of NPCs needs RunicNPC loaded and answering `RunicNpcApiNeeded` (6)**, a
|
||||
`profile` placement and one of Rust's own NPC prefabs (`npc.scientist`, `npc.bandit.guard`, …) alike. Crates are
|
||||
unaffected. The refusal is checked before anything is spawned, with the two reasons that already exist:
|
||||
|
||||
| `reason` | Means | Retried? |
|
||||
|---|---|---|
|
||||
| `runicnpc-missing` | RunicNPC is not loaded, so this server places no NPCs | no |
|
||||
| `runicnpc-old` | RunicNPC answers an API older than the bridge needs | no |
|
||||
|
||||
The site checks the same thing first, from the hello's `integrations.runicNpc`, and refuses the step before it
|
||||
is sent; the bridge's check is for a site that missed the hello. `rg.npc` says the same when RunicNPC is not
|
||||
loaded.
|
||||
|
||||
Reference in New Issue
Block a user