feat(rust): ZLevels Remastered on the servers page (PLAN_REDESIGNS §14.3.6)
All checks were successful
PR Checks / client-build (pull_request) Successful in 25s
PR Checks / server-tests (pull_request) Successful in 31s
PR Checks / frozen-manifest (pull_request) Successful in 51s

Stage 7 of the §14.3 integration plan (D374): Server settings' plugin
line says whether ZLevels is loaded and that an event may lend its XP
boosts as permissions. The integrations schema gains zLevels; the
swagger fragment is regenerated. No leaderboard change, nothing stored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-10-15 18:27:57 -05:00
parent 8be7e5607e
commit 9c82a0c437
4 changed files with 66 additions and 1 deletions

View File

@@ -144,6 +144,11 @@ one now, kept when the run ends: an airdrop or a patrol helicopter can be sent t
alone — and the run log says so. Refused where Guarded Crate or NpcSpawn is absent, where the event alone — and the run log says so. Refused where Guarded Crate or NpcSpawn is absent, where the event
is not one the server has, or where the framework cannot run its console command is not one the server has, or where the framework cannot run its console command
(`docs/modules/rust/PLAN_REDESIGNS.md` §14.3.5). (`docs/modules/rust/PLAN_REDESIGNS.md` §14.3.5).
- **ZLevels Remastered** (nivex, 3.3.1). The servers page says whether it is loaded, and that is all:
its levels are never read, and the leaderboard has no column for them. Its XP boosts are its own
permissions (`zlevelsremastered.vip1`–`vip3`), so a *Double XP weekend* is a **Permissions until the event ends**
step, which takes effect at once and is taken back when the run ends
(`docs/modules/rust/PLAN_REDESIGNS.md` §14.3.6).
News and event lines said in chat can wear one styled group's title and colours — the News and event lines said in chat can wear one styled group's title and colours — the
**announcement voice**, chosen in Admin → Rust servers. The line is said by the bridge plugin with no **announcement voice**, chosen in Admin → Rust servers. The line is said by the bridge plugin with no

View File

@@ -265,7 +265,18 @@ export function integrationsLine(r) {
const withTruePve = r.integrations.truePve ? `${withBackpacks} ${truePveLine(r.integrations.truePve)}` : withBackpacks const withTruePve = r.integrations.truePve ? `${withBackpacks} ${truePveLine(r.integrations.truePve)}` : withBackpacks
const withDynamicPvp = r.integrations.dynamicPvp ? `${withTruePve} ${dynamicPvpLine(r.integrations.dynamicPvp)}` : withTruePve const withDynamicPvp = r.integrations.dynamicPvp ? `${withTruePve} ${dynamicPvpLine(r.integrations.dynamicPvp)}` : withTruePve
const withDt = r.integrations.dangerousTreasures ? `${withDynamicPvp} ${dangerousTreasuresLine(r.integrations.dangerousTreasures, r.console)}` : withDynamicPvp const withDt = r.integrations.dangerousTreasures ? `${withDynamicPvp} ${dangerousTreasuresLine(r.integrations.dangerousTreasures, r.console)}` : withDynamicPvp
return r.integrations.guardedCrate ? `${withDt} ${guardedCrateLine(r.integrations.guardedCrate, r.console)}` : withDt const withGc = r.integrations.guardedCrate ? `${withDt} ${guardedCrateLine(r.integrations.guardedCrate, r.console)}` : withDt
return r.integrations.zLevels ? `${withGc} ${zLevelsLine(r.integrations.zLevels)}` : withGc
}
/**
* ZLevels Remastered (PLAN_REDESIGNS §14.3.6), from protocol 14. Only whether it is
* loaded: its levels never reach the site (D374), and its XP boosts are permissions
* an event lends like any other.
*/
export function zLevelsLine(z) {
if (!z.loaded) return 'ZLevels is not loaded — there are no XP boosts for an event to lend.'
return `${`ZLevels ${z.version || ''}`.trim()} is loaded — an event may lend its XP boosts (zlevelsremastered.vip1 to vip3) as permissions.`
} }
/** /**

View File

@@ -289,6 +289,11 @@ module.exports = {
events: { type: 'array', items: { type: 'string' }, example: ['Easy', 'Medium', 'Hard', 'Elite'] }, events: { type: 'array', items: { type: 'string' }, example: ['Easy', 'Medium', 'Hard', 'Elite'] },
}, },
}, },
zLevels: {
type: 'object',
description: 'Protocol 14 (PLAN_REDESIGNS §14.3.6, D374): whether ZLevels Remastered is loaded, and nothing more. Its levels are never read; its XP boosts are permissions an event lends through a Permissions until the event ends step.',
properties: { loaded: { type: 'boolean', example: true }, version: { type: 'string', example: '3.3.1' } },
},
}, },
}, },
console: { console: {

View File

@@ -5579,6 +5579,50 @@
} }
} }
} }
},
"zLevels": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "object"
},
"description": {
"type": "string",
"example": "Protocol 14 (PLAN_REDESIGNS §14.3.6, D374): whether ZLevels Remastered is loaded, and nothing more. Its levels are never read; its XP boosts are permissions an event lends through a Permissions until the event ends step."
},
"properties": {
"type": "object",
"properties": {
"loaded": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "boolean"
},
"example": {
"type": "boolean",
"example": true
}
}
},
"version": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "string"
},
"example": {
"type": "string",
"example": "3.3.1"
}
}
}
}
}
}
} }
} }
} }