docs(runicnpc): stage 4 decisions D249-D251
D249: RunicNPC gets API 3 in stage 4 (a fifth PR): a call that creates and names a placement from a map point it grounds and checks, rename and respawn calls, and a hook raised when a placement changes. D250: per-profile kills on the player's public stats, as a title category, and as a leaderboard ranked by a picked profile. D251: where an adopted server profile and a site profile share a name on that server, the site's wins; the server's own is kept as "replaced". 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 @@
|
|||||||
decided with it. **Stage 1 measured 2026-09-30** (§9): six answers on both rigs; D231 was decided with it.
|
decided with it. **Stage 1 measured 2026-09-30** (§9): six answers on both rigs; D231 was decided with it.
|
||||||
**Stage 2's design answered 2026-09-30:** D232–D238 (§0), which reshape stage 2 (§9). **Stage 2 built and tested
|
**Stage 2's design answered 2026-09-30:** D232–D238 (§0), which reshape stage 2 (§9). **Stage 2 built and tested
|
||||||
2026-09-30** on both rigs (§9); its API is [API.md](API.md). **Stage 3's design answered 2026-09-30:** D239–D242
|
2026-09-30** on both rigs (§9); its API is [API.md](API.md). **Stage 3's design answered 2026-09-30:** D239–D242
|
||||||
(§0). **Stage 3 built and tested 2026-09-30** on both rigs (§9); its in-game walk waits for a player.
|
(§0). **Stage 3 built and tested 2026-09-30** on both rigs (§9); its in-game walk waits for a player. **Stage 4's
|
||||||
|
design answered 2026-09-30:** D243–D251 (§0).
|
||||||
|
|
||||||
RunicNPC is Runic Gateway's own NPC plugin for Rust servers, in its own repository,
|
RunicNPC is Runic Gateway's own NPC plugin for Rust servers, in its own repository,
|
||||||
[`RunicGateway/runicnpc-rust`](https://gitea.whitlocktech.com/RunicGateway/runicnpc-rust). It runs on Oxide and
|
[`RunicGateway/runicnpc-rust`](https://gitea.whitlocktech.com/RunicGateway/runicnpc-rust). It runs on Oxide and
|
||||||
@@ -63,6 +64,9 @@ architectural or design decision is implemented.
|
|||||||
| **D246** | **The map's placement form has `/rnpc place`'s options** (D242): profile, count, respawn, each or group, movement and radius. The server names the placement, as in game (D241) (stage 4). | The profile only, everything else edited afterwards. |
|
| **D246** | **The map's placement form has `/rnpc place`'s options** (D242): profile, count, respawn, each or group, movement and radius. The server names the placement, as in game (D241) (stage 4). | The profile only, everything else edited afterwards. |
|
||||||
| **D247** | **Kills are counted by profile name, per server, by default. Each site profile can choose otherwise** with a "kills count" setting: *this server* (the default), *every server with a profile of this name*, or *this profile only* (the site profile, on whichever servers it is pushed to). The org lead's words: "by name per server (default) with options for the server admin to choose different ways" (stage 4, refines D225). | One fixed rule; one site-wide setting; one setting per server. |
|
| **D247** | **Kills are counted by profile name, per server, by default. Each site profile can choose otherwise** with a "kills count" setting: *this server* (the default), *every server with a profile of this name*, or *this profile only* (the site profile, on whichever servers it is pushed to). The org lead's words: "by name per server (default) with options for the server admin to choose different ways" (stage 4, refines D225). | One fixed rule; one site-wide setting; one setting per server. |
|
||||||
| **D248** | **Stage 4 is one stage, with a PR in each of its four repositories plus docs, walked once end to end** (stage 4). Its wire changes join protocol 13, which is not yet released. | Split into 4a (wire), 4b (site) and 4c (shipping), each walked before the next. |
|
| **D248** | **Stage 4 is one stage, with a PR in each of its four repositories plus docs, walked once end to end** (stage 4). Its wire changes join protocol 13, which is not yet released. | Split into 4a (wire), 4b (site) and 4c (shipping), each walked before the next. |
|
||||||
|
| **D249** | **RunicNPC gets API 3 in stage 4, a fifth PR, in `runicnpc-rust`**: a call that creates a placement and names it as `/rnpc place` does (D241, D246), puts a map point on the ground and checks it against the navmesh (D245), and a hook raised whenever a placement changes, so an edit made in game reaches the site at once. The bridge only calls it (stage 4). | The bridge copying the naming rule and checking the placements every minute. |
|
||||||
|
| **D250** | **Per-profile kills are shown on the player's public stats ("Warden kills: 3"), in a "kills of a profile" title category, and as a leaderboard the visitor picks a profile for** (stage 4, D225, D247). | The player page and titles only; titles only. |
|
||||||
|
| **D251** | **Where an adopted server profile and a site profile share a name on that server, the site's wins** (stage 4, refines D244). The server's own is still imported, marked "replaced" and kept for an admin to restore, and that server's placements take the site profile's values. | The adopted one winning on its server, with the site's profile skipping it. |
|
||||||
|
|
||||||
**Borrowing, not copying.** NpcSpawn states no licence at all, so its source grants us nothing and is read only as a
|
**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
|
description of *what* can be done in Rust. HumanNPC is MIT on uMod, which is GPL-compatible, but §1.2 rules out its
|
||||||
@@ -684,8 +688,12 @@ Across four repositories, one PR in each plus docs, walked once end to end (D248
|
|||||||
2026-09-30 are D243–D248: the event picker shows profiles and Rust's own scientists (D243); a server's own profiles
|
2026-09-30 are D243–D248: the event picker shows profiles and Rust's own scientists (D243); a server's own profiles
|
||||||
are adopted, not replaced, on the first push (D244); placements are listed, edited and created from the live map
|
are adopted, not replaced, on the first push (D244); placements are listed, edited and created from the live map
|
||||||
with `/rnpc place`'s options (D245, D246); and kills are counted by profile name per server unless a profile says
|
with `/rnpc place`'s options (D245, D246); and kills are counted by profile name per server unless a profile says
|
||||||
otherwise (D247).
|
otherwise (D247). Three more answers followed the same day: RunicNPC itself gets API 3, a fifth PR (D249); per-profile
|
||||||
|
kills are on the player's public stats, in titles and on a leaderboard (D250); and where an adopted profile and a site
|
||||||
|
profile share a name, the site's wins (D251).
|
||||||
|
|
||||||
|
- **RunicNPC (API 3, D249):** a call that creates a placement and names it as in game, from a map point it puts on
|
||||||
|
the ground and checks against the navmesh; rename and respawn as calls; a hook raised whenever a placement changes.
|
||||||
- **Rust-Plugins (the bridge):**
|
- **Rust-Plugins (the bridge):**
|
||||||
- hello reports RunicNPC's presence and API version;
|
- hello reports RunicNPC's presence and API version;
|
||||||
- `world.place` for an NPC takes a profile, and the placing is RunicNPC's;
|
- `world.place` for an NPC takes a profile, and the placing is RunicNPC's;
|
||||||
@@ -705,7 +713,10 @@ otherwise (D247).
|
|||||||
own scientists in the picker (D243);
|
own scientists in the picker (D243);
|
||||||
- triggers `rust.npc.died` and `rust.npc.health`, so a phase can wait for "8 guards died" (waves) or "the boss
|
- triggers `rust.npc.died` and `rust.npc.health`, so a phase can wait for "8 guards died" (waves) or "the boss
|
||||||
below 50%";
|
below 50%";
|
||||||
- per-profile stats and titles, counted as each profile says (D247).
|
- per-profile stats and titles, counted as each profile says (D247): on the player's public stats, as a title
|
||||||
|
category, and as a leaderboard ranked by the profile a visitor picks (D250);
|
||||||
|
- an adopted profile whose name a site profile already has on that server is kept as "replaced", restorable
|
||||||
|
(D251).
|
||||||
- **Installer and egg:**
|
- **Installer and egg:**
|
||||||
- RunicNPC becomes a third artefact in the Rust bundle, pinned and checksummed like the plugin and the sidecar
|
- RunicNPC becomes a third artefact in the Rust bundle, pinned and checksummed like the plugin and the sidecar
|
||||||
(D224);
|
(D224);
|
||||||
|
|||||||
Reference in New Issue
Block a user