feat(rust): RunicNPC is required for every Place NPCs step (runicnpc stage 9, D310)
A Place NPCs step on a server without RunicNPC, or with one older than the
bridge needs, is refused before it is sent: "<server> needs RunicNPC to place
NPCs, Rust's own scientists included: <why>". Rust's own scientists were the
fallback until now (D243); they need RunicNPC too. Crates are unaffected.
- npcs.model: API_NEEDED rises from 4 to 6, the bridge's RunicNpcApiNeeded, so a
server the site calls ready is one the bridge will not refuse as runicnpc-old.
The profile push follows the same floor.
- eventWorld: profileMissing becomes npcMissing, asked for every NPC step.
- Admin → Rust → Servers: each server carries `runicNpc` ({ready, absence,
version, api}) and a server without one that will do reads "Incomplete" with
the reason. Swagger documents the field.
The event picker is unchanged in this commit (an open question on the PR).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -27,10 +27,11 @@ const log = core.logger('admin')
|
||||
|
||||
async function listServers(req, res) {
|
||||
try {
|
||||
const [rows, settings, categories] = await Promise.all([
|
||||
const [rows, settings, categories, npcStatus] = await Promise.all([
|
||||
servers.listForAdmin(),
|
||||
titlesModel.settingsByServer(),
|
||||
titlesModel.categories(),
|
||||
npcs.serverStatus(),
|
||||
])
|
||||
|
||||
// Phase 17: each server's chat titles, and what the last push of them found.
|
||||
@@ -41,6 +42,8 @@ async function listServers(req, res) {
|
||||
...row,
|
||||
titles: settings.get(row.id) || { mode: 'first', max: 2, rules: [] },
|
||||
titlePush: titleSync.lastPush(row.id),
|
||||
// Runicnpc stage 9 (D310): RunicNPC is required, so a server without it is incomplete.
|
||||
runicNpc: npcStatus.get(row.id) || { ready: false, absence: 'no such server', version: null, api: 0 },
|
||||
})),
|
||||
titleCategories: categories,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user