All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 8s
npc.boss.spawned, npc.boss.phase and npc.boss.died, from RunicNPC API 5's boss hooks, for the site's spawned, phase and killed triggers (D277). The death frame names the killer and counts the players who hurt the boss; npc.died still carries every contributor. A profile's `boss` and `use` blocks travel in the push unchanged. runicnpc_api and RunicNpcApiNeeded are 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
92 lines
5.4 KiB
TOML
92 lines
5.4 KiB
TOML
# Release metadata for the deployable overlay.
|
|
#
|
|
# Consumed by the release workflow, which folds these values into the
|
|
# manifest.json shipped inside the overlay tarball. The Runic Gateway installer
|
|
# reads that manifest to decide what it is deploying and whether it is compatible
|
|
# with the sidecar it is about to install.
|
|
#
|
|
# There is deliberately NO version key here. The release version is derived from
|
|
# git tags and conventional commits by the release workflow, so there is no bump
|
|
# commit to keep in sync and no way for this file to disagree with the tag.
|
|
|
|
# ── The loopback wire-protocol version this overlay speaks ───────────────────
|
|
#
|
|
# The plugin half of the compatibility contract. It MUST equal the sidecar's
|
|
# PROTOCOL_VERSION (Rust-Link's sidecar/src/main.rs) for a deployment to work:
|
|
# the sidecar rejects a mismatched WEBSITE with 409, and a mismatched PLUGIN is
|
|
# worse, because the game link has no such check — it would simply mis-parse.
|
|
#
|
|
# That asymmetry is why this file exists. The plugin announces its protocol in
|
|
# `server.hello`, which is only readable after the game server has booted with it
|
|
# loaded — far too late for an installer to refuse a bad pairing. This
|
|
# declaration is what lets the bundle CI check the pair BEFORE an operator
|
|
# installs either half.
|
|
#
|
|
# Keeping it honest is a manual duty: when the protocol changes, bump it here in
|
|
# the same change that alters the emitters, exactly as the sidecar bumps
|
|
# PROTOCOL_VERSION and the module bumps its own constant.
|
|
#
|
|
# Current: 13 — 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, the world verbs events place and give back, and
|
|
# the rewards: a run's participation tally, kit credits and chat (PROTOCOL.md §16),
|
|
# the map: its picture and everything that moves on it (PROTOCOL.md §17), and the
|
|
# optional mods: BetterChat titles and group styles, and popups (PROTOCOL.md §18),
|
|
# and the first player walk's fixes (PROTOCOL.md §19) — opened by a configuration
|
|
# save that answers at once and reports its reload as a `config.outcome` frame.
|
|
protocol = 13
|
|
|
|
# ── Oxide compatibility ──────────────────────────────────────────────────────
|
|
#
|
|
# The overlay only ADDS files — the bridge, and beside it the ZoneManager helper
|
|
# (`RunicGatewayZones.cs`, docs/modules/rust/PLAN_FIXES.md D181, D182), both into
|
|
# `oxide/plugins/` — and patches nothing on disk, so it is expected to work on any
|
|
# reasonably current Oxide. The helper patches ZoneManager in memory with Harmony,
|
|
# which both frameworks load; without it the bridge still loads and falls back.
|
|
# This is the oldest build it is known good on.
|
|
#
|
|
# There is no `patches_verified_against` key, and there is no `patches/` tier:
|
|
# Rust's server is a binary and Oxide's hook API is the supported way in, so
|
|
# there is nothing to diff against. That is the whole reason the Rust payload is
|
|
# simpler than the ServUO one.
|
|
min_oxide_version = "2.0.7585"
|
|
|
|
# ── Carbon compatibility ─────────────────────────────────────────────────────
|
|
#
|
|
# The same file runs unchanged on Carbon (docs/modules/rust/PLAN.md R19); the
|
|
# installer and the egg decide whether it lands in `oxide/plugins/` or
|
|
# `carbon/plugins/`. This is the build R19 was proven on (PLAN.md §34.4).
|
|
#
|
|
# Neither floor is measured from a DLL by `doctor`: a plugin that compiled and
|
|
# connected on this framework is the fact a floor only approximates, so a
|
|
# connected plugin is the pass, and the floors are printed with any failure.
|
|
min_carbon_version = "2.0.259"
|
|
|
|
# The `oxide/plugins/` files this overlay expects to find already installed. They
|
|
# are not shipped here — they are third-party plugins an operator installs from
|
|
# uMod — and the installer's `doctor` reports a missing one rather than
|
|
# installing it. Listing them is what turns a missing reward or zone into a
|
|
# named prerequisite.
|
|
#
|
|
# The uMod **Clans** plugin is deliberately NOT listed (docs/modules/rust/PLAN.md
|
|
# D47). Teams come from Rust's own clan system, which that plugin never touches,
|
|
# so requiring it would split a server's players across two unrelated clan
|
|
# systems. Phase 17 dropped the adapter it was meant to get (D134).
|
|
#
|
|
# **PopupNotifications is not listed either** (D141). It is optional: a popup
|
|
# asked of a server without it is refused with a reason, and chat is the default.
|
|
# BetterChat is optional in the same way — titles and group styles wait for it.
|
|
requires_plugins = ["Kits", "ZoneManager"]
|
|
|
|
# ── The RunicNPC API the bridge needs ───────────────────────────────────────
|
|
#
|
|
# RunicNPC (docs/runicnpc/PLAN.md stages 4 to 6): the bridge's npc.* commands call
|
|
# RunicNPC's API and need at least this version of it. It MUST equal
|
|
# `RunicNpcApiNeeded` in RunicGateway.cs; `node scripts/checkPlugin.js` holds the
|
|
# two equal. The release copies it into manifest.json, and the installer's
|
|
# bundle carries the latest RunicNPC release that answers at least it (D224).
|
|
#
|
|
# RunicNPC is optional to the bridge until its stage 9: without it every npc.*
|
|
# command answers `runicnpc-missing`, and events place Rust's own scientists.
|
|
runicnpc_api = 5
|