feat(rust): Dynamic PVP's zones on the feed and the map (PLAN_REDESIGNS §14.3.3)
Stage 4 of the §14.3 integration plan, on protocol 14 (docs rust-link/PROTOCOL.md §20.7). - pvp.zone.created is a public kind, pvp.zone.deleted a staff kind. Each row is read per viewer by the new dynamicPvp.js: grid for everyone, the event's name only for Dynamic PVP's own vanilla events, position and zone id for staff only. - The feed's world filter carries the opening: "A PvP zone opened around the downed patrol helicopter · G7 · for 10 min". It names nobody. - The map gains a fifth layer, `pvp` (PvP zones), public by default with its own audience in Admin → Rust visibility, drawn as a red ring with its event's name. - Server settings' plugin line names Dynamic PVP; the swagger schemas and route descriptions carry the layer and the integration (fragment regenerated); ci/bundle.json ships dynamicPvp.js; README lists it. Tests: server 611/611 (dynamicPvp.test.js new, catalogue and map extended) and every check; client 89/89 (feed and map tooltip), build and externals. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -42,3 +42,26 @@ export function eventTip(row, titles) {
|
||||
export function isBoss(row) {
|
||||
return Boolean(row && (row.boss || row.kind === 'boss'))
|
||||
}
|
||||
|
||||
// ── Dynamic PVP's zones (protocol 14, PLAN_REDESIGNS §14.3.3) ──────────────
|
||||
|
||||
/** Dynamic PVP's own events as the map names them; a monument's or an operator's is shown as written. */
|
||||
export const PVP_NAMES = Object.freeze({
|
||||
Helicopter: 'Patrol helicopter',
|
||||
Bradley: 'Bradley APC',
|
||||
Satellite: 'Satellite crash',
|
||||
TimedSupply: 'Airdrop',
|
||||
SupplySignal: 'Signalled airdrop',
|
||||
CargoShip: 'Cargo ship',
|
||||
HackableCrate: 'Locked crate',
|
||||
ExcavatorIgnition: 'Giant Excavator',
|
||||
GhostShip: 'Ghost ship',
|
||||
DeepSeaIsland: 'Deep Sea island',
|
||||
IslandCannon: 'Island cannon',
|
||||
})
|
||||
|
||||
/** A Dynamic PVP ring's tooltip: "PvP zone · Patrol helicopter". */
|
||||
export function pvpTip(z) {
|
||||
const name = PVP_NAMES[z.event] || z.event
|
||||
return name ? `PvP zone · ${name}` : 'PvP zone'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user