feat(rust): the rewards — tally, kit reward, chat and the news leg (phase 13b, protocol 10)
Four event verbs and the announce leg, per PLAN.md §29: - rust.participation.open / .collect: the plugin counts who takes part (seconds, kills or both, in a zone this run opened or the whole server) and collect files them as the run's participants, keyed by Steam id. - rust.kit.entitle: the five recipient modes (D101), rows in the new rust_perm_run_grants (D84) unioned into the permission push, one extra use of the kit per reward as site-held credits on perm.sync (D103), and the rust.kit.entitled notice deferred from phase 10 (D64). - rust.announce: one server or every server (D105). - rust.chat announce leg, speaking only on servers whose new news switch is on (D104) - a card on Admin -> Rust visibility (D106). Budgets rust.grants and rust.announcements; the kit source and four fixed-choice sources (core has no enum param type). rust_perm_run_grants carries core's idempotency key so a revert of a lost answer can find its rows. Protocol 10. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -316,6 +316,81 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "rust.kit.entitled",
|
||||
"label": "An event rewarded you a kit",
|
||||
"description": "An event on a Rust server rewarded you: a kit is waiting in the in-game Kits menu, with one extra use.",
|
||||
"kind": "event",
|
||||
"subjectKey": "rewardKey",
|
||||
"audience": "owner",
|
||||
"ceiling": "owner",
|
||||
"version": 1,
|
||||
"variables": [
|
||||
{
|
||||
"name": "title",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"example": "Main is back online",
|
||||
"description": "A one-line headline naming what happened and where. Core generic bodies use it as the title."
|
||||
},
|
||||
{
|
||||
"name": "intro",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"example": "Main is back up and taking players.",
|
||||
"description": "One sentence of detail. Core generic bodies use it as the body."
|
||||
},
|
||||
{
|
||||
"name": "rewardKey",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"example": "41:7",
|
||||
"description": "The run and step that awarded it. The cooldown subject; not meant for display."
|
||||
},
|
||||
{
|
||||
"name": "kit",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"example": "vip-starter",
|
||||
"description": "The kit name, as the server Kits plugin has it."
|
||||
},
|
||||
{
|
||||
"name": "serverId",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"example": "main",
|
||||
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
||||
},
|
||||
{
|
||||
"name": "server",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"example": "Runic Gateway | Main",
|
||||
"description": "The server's display name."
|
||||
},
|
||||
{
|
||||
"name": "serverUrl",
|
||||
"type": "url",
|
||||
"required": false,
|
||||
"example": "/rust/servers/main",
|
||||
"description": "Site-relative path to the server's page."
|
||||
},
|
||||
{
|
||||
"name": "mode",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"example": "top",
|
||||
"description": "How the recipients were chosen: everyone, top, minScore, random or topPercent."
|
||||
},
|
||||
{
|
||||
"name": "accountUrl",
|
||||
"type": "url",
|
||||
"required": false,
|
||||
"example": "/player/rust",
|
||||
"description": "Site-relative path to your Rust account page."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "rust.leaderboard.topped",
|
||||
"label": "A new kills leader",
|
||||
@@ -1059,6 +1134,28 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "rewards-v1",
|
||||
"rules": [
|
||||
{
|
||||
"trigger_id": "rust.kit.entitled",
|
||||
"audience": "owner",
|
||||
"channels": [
|
||||
"email",
|
||||
"inapp"
|
||||
],
|
||||
"template_keys": {
|
||||
"email": "notify.event",
|
||||
"inapp": "inapp.event",
|
||||
"digest": "notify.digest"
|
||||
},
|
||||
"conditions": null,
|
||||
"cooldown_seconds": 0,
|
||||
"delay_seconds": 0,
|
||||
"cancel_on": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "clans-v1",
|
||||
"rules": [
|
||||
|
||||
Reference in New Issue
Block a user