feat(bridge): protocol 10 — the tally, kit credits and chat (phase 13b)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 10s

- tally.open / .snapshot / .close: a run's participation tally, persisted
  in tallies.json. Presence accrues every 5 s from ZoneManager's own
  membership (or the whole server); kills are the last hit, gated by
  killsOf and the killer being inside the area (D98); the score is
  seconds, kills, or minutes + killWeight x kills (D99). Only a zone this
  run opened counts (D100). Gated by EventsEnabled (D107); forgotten
  seven days after opening (D108).
- kits.list: the kit source, from Kits' GetKitNames/GetKitInfo.
- perm.sync `credits`: one extra use of a kit per reward (D103), held in
  credits.json and spent LAST from OnKitRedeemed, because Kits'
  SetPlayerKitUses does nothing for a player with no usage record.
  Withdrawn when unredeemed; reset when Kits wipes its use counts.
- chat.say: one line to the server, remembered by key for 10 minutes.
- EventsMaxRecipients / EventsMaxTallies / EventsMaxChat bounds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-09-24 07:00:44 -05:00
parent 81e0ab8c06
commit 3d9998ce64
2 changed files with 1233 additions and 7 deletions

View File

@@ -26,11 +26,11 @@
# the same change that alters the emitters, exactly as the sidecar bumps
# PROTOCOL_VERSION and the module bumps its own constant.
#
# Current: 9 — the transport, the read path, identity, the permission mirror,
# Current: 10 — the transport, the read path, identity, the permission mirror,
# configuration from the site, first-party clans, a raid frame that names who
# lives there, the event leases, and the world verbs events place and give back
# (docs/rust-link/PROTOCOL.md §15).
protocol = 9
# lives there, the event leases, the world verbs events place and give back, and
# the rewards: a run's participation tally, kit credits and chat (PROTOCOL.md §16).
protocol = 10
# ── Oxide compatibility ──────────────────────────────────────────────────────
#

File diff suppressed because it is too large Load Diff