feat(rust): NPC profile and placement routes, the event picker, triggers and titles (runicnpc stage 4)
Admin: /admin/rust/npcs for profiles (create, change, delete, restore a replaced one, push now) and each server's placements (list, add from a map point, change, remove, rename, respawn). Public: the profiles a leaderboard ranks by, one profile's ranking counted as the profile says (D247, D250), and one player's kills by profile (D252). Player: your own kills by profile. The Place NPCs step offers the site's profiles first, then Rust's own (D243). rust.npc.died and rust.npc.health are triggers a phase can wait on. A title rule can rank a profile's kills. Swagger fragment, engagement and route manifests regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -12,7 +12,7 @@ const SERVERS = 'rust_servers'
|
||||
/** One server's rules, in precedence order. */
|
||||
async function listRules(serverId) {
|
||||
return core.query(
|
||||
`SELECT id, stat, top_n AS topN, text, color
|
||||
`SELECT id, stat, top_n AS topN, text, color, profile_id AS profile
|
||||
FROM ${RULES}
|
||||
WHERE server_id = ?
|
||||
ORDER BY position ASC, id ASC`,
|
||||
@@ -23,7 +23,7 @@ async function listRules(serverId) {
|
||||
/** Every server's rules, for the admin list — one read rather than one per server. */
|
||||
async function listAllRules() {
|
||||
return core.query(
|
||||
`SELECT server_id AS serverId, stat, top_n AS topN, text, color
|
||||
`SELECT server_id AS serverId, stat, top_n AS topN, text, color, profile_id AS profile
|
||||
FROM ${RULES}
|
||||
ORDER BY server_id ASC, position ASC, id ASC`,
|
||||
)
|
||||
@@ -52,9 +52,9 @@ async function saveSettings(serverId, { mode, max, rules }) {
|
||||
if (!rules.length) return
|
||||
|
||||
await core.query(
|
||||
`INSERT INTO ${RULES} (server_id, position, stat, top_n, text, color)
|
||||
VALUES ${rules.map(() => '(?, ?, ?, ?, ?, ?)').join(',')}`,
|
||||
rules.flatMap((r, i) => [serverId, i, r.stat, r.topN, r.text, r.color]),
|
||||
`INSERT INTO ${RULES} (server_id, position, stat, top_n, text, color, profile_id)
|
||||
VALUES ${rules.map(() => '(?, ?, ?, ?, ?, ?, ?)').join(',')}`,
|
||||
rules.flatMap((r, i) => [serverId, i, r.stat, r.topN, r.text, r.color, r.profile || null]),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user