feat(bridge): Dynamic PVP's zones on protocol 14 (PLAN_REDESIGNS §14.3.3) #37
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/dynamic-pvp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Stage 4 of the §14.3 integration plan. Spec: docs
rust-link/PROTOCOL.md§20.7 and §17.3 (docs PR alongside). Record:modules/rust/PLAN_REDESIGNS.md§14.3.17.Two events from Dynamic PVP's own hooks:
pvp.zone.created{ zoneId, event, x, z, radius, shape, durationSec }, fromOnCreatedDynamicPVPpvp.zone.deleted{ zoneId, event }, fromOnDeletedDynamicPVPNeither is sent while the world is not live, because a boot or a shutdown opens or closes every monument zone at once.
Size and position come from ZoneManager:
Radius, or half a cube's longer side (cargo's zone is a cube)GetZoneByIDas aComponent, so cargo's zone moves with the shipmap.livegains apvplayer of the live zones. The two hooks keep it up to date. It is seeded from Dynamic PVP's ownAllDynamicPVPZones()/GetEventName()when the world is ready and when Dynamic PVP loads. A zone ZoneManager no longer holds is dropped.Hello gains
integrations.dynamicPvp, sent again when Dynamic PVP loads or unloads.rg.worldprintsdynamicPvp=andpvpZones=. Both hooks joinrg.hooks.The bridge never makes, maps or erases one of Dynamic PVP's zones. README lists Dynamic PVP among the optional plugins.
Tested: compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262).
rg.worldreaddynamicPvp=False pvpZones=0, then both rigs went back on the protocol-13 bridge. Dynamic PVP itself is not on the rigs; its hooks are exercised by §14.3.3's walk rows at the end walk (D331, D359).AI-assisted: written with Claude Code (disclosed per org policy).
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Stage 4 of the §14.3 integration plan, specified in docs rust-link/PROTOCOL.md §20.7 and §17.3. - pvp.zone.created { zoneId, event, x, z, radius, shape, durationSec } from OnCreatedDynamicPVP, and pvp.zone.deleted { zoneId, event } from OnDeletedDynamicPVP. Neither is sent while the world is not live. - Size and place come from ZoneManager: a sphere's Radius, or half a cube's longer side (cargo's zone is a cube); the position is the zone's transform, so cargo's moves with the ship. - map.live gains a `pvp` layer of the live zones, kept by the two hooks and seeded from Dynamic PVP's own AllDynamicPVPZones / GetEventName at world ready and when it loads; a zone ZoneManager no longer holds is dropped. - hello's integrations.dynamicPvp, sent again when it loads or unloads; rg.world prints dynamicPvp= and pvpZones=; both hooks join rg.hooks. - The bridge never makes, maps or erases one of Dynamic PVP's zones. Compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY