feat(bridge): every NPC an event places needs RunicNPC (runicnpc stage 9, D310) #27

Merged
whitlocktech merged 1 commits from feat/runicnpc-stage9 into edge 2026-10-06 21:43:12 -05:00
Member

What & why

Phase 9b of docs/runicnpc/PLAN.md stage 9, D310. The bridge refuses an NPC placement when RunicNPC is not loaded, so a module that missed the hello cannot get one through.

  • world.place of one of Rust's own NPC prefabs (npc.scientist, npc.bandit.guard, …) now needs RunicNPC loaded and answering RunicNpcApiNeeded (6), as a profile placement does. It is refused before anything spawns.
  • A profile placement now also refuses an old RunicNPC up front. Before, it was refused only when it carried orders.
  • Both use the reasons that already exist, runicnpc-missing and runicnpc-old, through one helper, RunicNpcForWorld. Crates are unaffected.
  • No message changes shape; protocol stays 13 (PROTOCOL §19.16 in docs#325). overlay.toml's runicnpc_api comment and rg.npc's line say RunicNPC is required.

Companion PRs (phase 9b)

docs#325, website#211, Module-Rust (the site refuses the same steps first), installer and runicnpc-rust.

How it was tested

  • node scripts/checkPlugin.js: plugin ok, protocol 13, 54 hooks.
  • Compiled and loaded on both rigs (Oxide 2.0.7801, Carbon 2.0.262, Rust 25681086); rg.npc answers "RunicNPC 0.0.0, API 6 (this bridge needs 6)" on both. Both rigs stay on this build.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What & why Phase 9b of `docs/runicnpc/PLAN.md` stage 9, D310. The bridge refuses an NPC placement when RunicNPC is not loaded, so a module that missed the hello cannot get one through. - `world.place` of one of Rust's own NPC prefabs (`npc.scientist`, `npc.bandit.guard`, …) now needs RunicNPC loaded and answering `RunicNpcApiNeeded` (6), as a profile placement does. It is refused before anything spawns. - A profile placement now also refuses an **old** RunicNPC up front. Before, it was refused only when it carried orders. - Both use the reasons that already exist, `runicnpc-missing` and `runicnpc-old`, through one helper, `RunicNpcForWorld`. Crates are unaffected. - **No message changes shape; protocol stays 13** (PROTOCOL §19.16 in docs#325). `overlay.toml`'s `runicnpc_api` comment and `rg.npc`'s line say RunicNPC is required. ## Companion PRs (phase 9b) docs#325, website#211, Module-Rust (the site refuses the same steps first), installer and runicnpc-rust. ## How it was tested - `node scripts/checkPlugin.js`: plugin ok, protocol 13, 54 hooks. - Compiled and loaded on **both rigs** (Oxide 2.0.7801, Carbon 2.0.262, Rust 25681086); `rg.npc` answers "RunicNPC 0.0.0, API 6 (this bridge needs 6)" on both. Both rigs stay on this build. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-06 21:37:08 -05:00
feat(bridge): every NPC an event places needs RunicNPC (runicnpc stage 9, D310)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 6s
3117b0c349
world.place of one of Rust's own NPC prefabs now needs RunicNPC loaded and
answering RunicNpcApiNeeded, as a profile placement does, so a module that
missed the hello cannot place NPCs on a server the site calls incomplete. The
refusal comes before anything spawns, with the existing reasons
runicnpc-missing and runicnpc-old; a profile placement now also refuses an old
RunicNPC up front (it was refused only when it carried orders). Crates are
unaffected. No message changes shape; protocol stays 13.

overlay.toml's runicnpc_api comment and rg.npc's line say RunicNPC is required.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 912b115e83 into edge 2026-10-06 21:43:12 -05:00
whitlocktech deleted branch feat/runicnpc-stage9 2026-10-06 21:43:13 -05:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Rust-Plugins#27
No description provided.