feat(rust): NPC sides, the faction table, an event's escort, ally and tether (runicnpc stage 5) #30

Merged
whitlocktech merged 1 commits from feat/runicnpc-stage5 into edge 2026-10-05 08:38:46 +00:00
Member

What

The site's half of RunicNPC stage 5 (docs runicnpc/PLAN.md, D253–D272).

  • Profiles: the guard role, and Sides (faction, its own exceptions, alert radius), Turrets, the two PVE checkboxes (D271) and the kit's extras, checked in RunicNPC's order and words, defaulting to "players only" (D255).
  • The faction table: one site-wide table (rust_npc_factions), one row per pair, both ways (D254, D268), edited on the NPC profiles page (PUT /admin/rust/npcs/factions), pushed to every server with its profiles and hashed with them; a standalone server's own pairs adopted at its first push, the site's winning (D244, D251).
  • Place NPCs step: escort (Steam id or {placeholder}), allyClan (new rust.options.clans source), allyTeamOf, tether — for a RunicNPC profile only (D269, D270, D272). no-zone and runicnpc-old are permanent; escort-offline is retried.
  • Placements: "keep inside zone" (tether, D272).
  • The RunicNPC API the site needs is 4.

Tested

488 server tests, 66 client tests, swagger fragment regenerated, routes.manifest.json regenerated against the pinned core (one route added), import and engagement checks pass.

Walked 2026-10-05 at the walk core, signed in as an admin: the profiles page and faction table; a pair saved and pushed (seen on the Oxide rig with rnpc.faction list); Bandit and Carbon Guard edited through the form and pushed (seen on the rigs); a placement tether to a missing zone refused in RunicNPC's words; an event (zone → guards with tether + allyTeamOf) whose NPCs on Carbon carried the faction, ally and the run's zone; an offline escort retried with the bridge's sentence. No console errors. Not walked: a clan ally with a live clan (neither rig has one; the picker rightly offers none).

Checklist

  • I have read CONTRIBUTING.md.
  • Tests added and passing.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). The commit carries the Co-Authored-By trailer.
  • I agree that my contribution is licensed under GPL-3.0-or-later.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What The site's half of RunicNPC stage 5 (docs `runicnpc/PLAN.md`, D253–D272). - **Profiles:** the `guard` role, and Sides (faction, its own exceptions, alert radius), Turrets, the two PVE checkboxes (D271) and the kit's extras, checked in RunicNPC's order and words, defaulting to "players only" (D255). - **The faction table:** one site-wide table (`rust_npc_factions`), one row per pair, both ways (D254, D268), edited on the NPC profiles page (`PUT /admin/rust/npcs/factions`), pushed to every server with its profiles and hashed with them; a standalone server's own pairs adopted at its first push, the site's winning (D244, D251). - **Place NPCs step:** `escort` (Steam id or `{placeholder}`), `allyClan` (new `rust.options.clans` source), `allyTeamOf`, `tether` — for a RunicNPC profile only (D269, D270, D272). `no-zone` and `runicnpc-old` are permanent; `escort-offline` is retried. - **Placements:** "keep inside zone" (`tether`, D272). - The RunicNPC API the site needs is 4. ## Tested 488 server tests, 66 client tests, swagger fragment regenerated, `routes.manifest.json` regenerated against the pinned core (one route added), import and engagement checks pass. **Walked 2026-10-05** at the walk core, signed in as an admin: the profiles page and faction table; a pair saved and pushed (seen on the Oxide rig with `rnpc.faction list`); Bandit and Carbon Guard edited through the form and pushed (seen on the rigs); a placement tether to a missing zone refused in RunicNPC's words; an event (zone → guards with `tether` + `allyTeamOf`) whose NPCs on Carbon carried the faction, ally and the run's zone; an offline escort retried with the bridge's sentence. No console errors. Not walked: a clan ally with a live clan (neither rig has one; the picker rightly offers none). ## Checklist - [x] I have read CONTRIBUTING.md. - [x] Tests added and passing. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. The commit carries the `Co-Authored-By` trailer. - [x] I agree that my contribution is licensed under GPL-3.0-or-later. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-05 06:17:32 +00:00
feat(rust): NPC sides, the faction table, an event's escort, ally and tether (runicnpc stage 5)
All checks were successful
PR Checks / client-build (pull_request) Successful in 31s
PR Checks / server-tests (pull_request) Successful in 39s
PR Checks / frozen-manifest (pull_request) Successful in 58s
11619a4dc6
RunicNPC stage 5 on the site (docs runicnpc/PLAN.md, D253-D272):

- profiles gain the guard role, faction, relations (its own exceptions),
  alertRadius, turrets, hurtByPlayers, hurtsPlayers and kitUse, checked in
  RunicNPC's order and words, and defaulting to "players only" (D255);
- the faction table: one site-wide table, one row per pair and both ways
  (D254, D268), stored in rust_npc_factions, edited on the NPC profiles page
  (PUT /admin/rust/npcs/factions), pushed to every server with its
  profiles and hashed with them, and a standalone server's own pairs
  adopted at its first push with the site's winning (D244, D251);
- the Place NPCs step takes escort (a Steam id or a {placeholder}), an ally
  (a clan from the new rust.options.clans source, or the team of a player)
  and tether (the zone this event made), for a RunicNPC profile only
  (D269, D270, D272);
- a placement may be held inside a zone (tether, D272);
- the bridge's RunicNPC API floor is 4.

Tests: 488 server, 66 client. routes.manifest.json regenerated against the
pinned core (one route added).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 620ea63b54 into edge 2026-10-05 08:38:46 +00:00
whitlocktech deleted branch feat/runicnpc-stage5 2026-10-05 08:38:46 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Module-Rust#30
No description provided.