docs(rust): phase 13b as built — the rewards (PLAN.md §29.6–29.9, PROTOCOL.md §16)
- PLAN.md §29.6: D106 (the news switch is a card on the visibility page), D107 (tally.open behind EventsEnabled), D108 (a tally is forgotten seven days after it opened). - §29.7 as built: where the build departed from §29.3 (presence asked of ZoneManager, idem_key on the run-grant rows, fixed-choice sources) and the walk, on both rigs, without a player. - §29.8 findings: real core refused a camelCase option-source id; Carbon refuses a grant to a Steam id it has never seen; panel-created data directories are not game-writable. - §29.9 what is not proven: the player half, now PLAYER_WALK.md's rewards walk. - PROTOCOL.md §16: protocol 10 — the tally, kits.list, kit credits on perm.sync, chat.say, three bounds, the sidecar's five routes. - The 13b phase row, and §9/§10 correction notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -276,7 +276,7 @@ start the run.
|
||||
| # | Author this, start it, then | You should see |
|
||||
|---|---|---|
|
||||
| 1 | **A `core.lease` on `rust.group.permission`**: target `<server>/default/<the kit's RequiredPermission>`, value `true`, 10 minutes. Open the kit menu before and after starting it | The kit goes from **locked** to **available** when the step runs, and back to locked when the run ends or its ten minutes pass — whichever comes first. Redeem it once while it is open: the items stay in your inventory after it locks again, which is correct (the lease borrowed the *right*, not the loot) |
|
||||
| 2 | **`rust.zone.open`** at a monument you are standing next to, radius 30, 15 minutes, a name you will recognise. At the console run `rgp.inzone` with you **outside** the zone, then walk in and run it again | `zone_list` at the console lists the zone with your name (`rg-<run>-…`). `rgp.inzone` answers *nobody* for it while you are outside and **your name** once you are in — that is ZoneManager's own `IsPlayerInZone` saying a player is inside a zone the bridge made, which is §28.8's first item. (`rgp.inzone` is the rig-only probe, `RgProbe13`, on both rigs; ZoneManager itself has no command that says who is in a zone.) Nothing reaches the website yet: the bridge subscribes to `OnEnterZone`/`OnExitZone` in 13b, not 13a |
|
||||
| 2 | **`rust.zone.open`** at a monument you are standing next to, radius 30, 15 minutes, a name you will recognise. At the console run `rgp.inzone` with you **outside** the zone, then walk in and run it again | `zone_list` at the console lists the zone with your name (`rg-<run>-…`). `rgp.inzone` answers *nobody* for it while you are outside and **your name** once you are in — that is ZoneManager's own `IsPlayerInZone` saying a player is inside a zone the bridge made, which is §28.8's first item. (`rgp.inzone` is the rig-only probe, `RgProbe13`, on both rigs; ZoneManager itself has no command that says who is in a zone.) Nothing reaches the website from this step. 13b's tally asks ZoneManager the same question every five seconds rather than subscribing to `OnEnterZone`/`OnExitZone` (PLAN.md §29.7) |
|
||||
| 3 | **Leave step 2's run going and restart the server.** Rejoin, walk back into the zone and run `rgp.inzone` | `zone_list` shows the zone **back** after the restart, at the same place and with the same name, re-created from the bridge's own record because ZoneManager forgets temporary zones. `rgp.inzone` names you again. On the site the run's zone row still reads `confirmed` |
|
||||
| 4 | **`rust.crate.place`**: `crate.hackable` ×1 and `crate.elite` ×3 at the same monument, spread 8. Loot one elite crate empty; start the hack on the locked crate. Then cancel the run | The crates are there and lootable, the hack timer runs. At teardown the untouched crates vanish, and the looted one is simply **gone** already — its row reads `reverted` all the same (§15.2: reverting something a player took is a success) |
|
||||
| 5 | **`rust.npc.place`**: `npc.scientist` ×3 at the monument. Kill one; let the others see you | They are hostile and fight. The one you killed is just gone; at teardown the survivors vanish mid-fight. Every row reads `reverted`. If an NPC spawned **inside a wall or fell through the ground**, note the monument — some offsets land off the navmesh, and that is a finding about where to put things, not a bug to hide |
|
||||
@@ -291,3 +291,39 @@ a zone there.
|
||||
the zone goes, the crates and NPCs vanish — with no website action beyond starting and cancelling the
|
||||
run; a restart in the middle keeps the zone; and nothing a player took or killed shows up as a
|
||||
failure on the run console.
|
||||
|
||||
## The rewards walk (phase 13b, protocol 10)
|
||||
|
||||
The parts of [`PLAN.md`](../modules/rust/PLAN.md) §29.4 that need somebody in the game. Everything
|
||||
around them was walked without a player (§29.7): the recipient modes, the push, the credits in both
|
||||
directions, the revert, a restart and a wipe, and chat. What is left is a person standing in a zone,
|
||||
landing a kill, and opening the Kits menu.
|
||||
|
||||
**Before you start:**
|
||||
|
||||
1. **Kits 4.4.9 is installed on both rigs**, with two test kits: `rgreward` (`RequiredPermission`
|
||||
`kits.rgreward`, `MaximumUses` 1, 100 wood) and `rgopen` (no permission, `MaximumUses` 1,
|
||||
100 stones). Both were installed on 2026-09-24.
|
||||
2. **`EventsEnabled` on**, and **`rust.kit.entitle` switched on** in Admin → Events → Actions with a
|
||||
`rust.grants` cap. It arrives off: it is a `change`. The participation verbs and
|
||||
`rust.announce` arrive on.
|
||||
3. **Your Steam account linked on the site** (`/link` in game, then the code on the site). A reward
|
||||
reaches only a linked account, and an unlinked winner is named in the step's detail as missed.
|
||||
4. **You have joined the server at least once.** On Carbon this is not optional: Carbon refuses a
|
||||
grant to a Steam id it has never seen (§29.8).
|
||||
|
||||
| # | Author this, start it, then | You should see |
|
||||
|---|---|---|
|
||||
| 1 | **A zone and a tally in it.** Phase 1: `rust.zone.open` at a monument you are near, radius 30, 30 minutes, named `Arena`; `rust.participation.open` on the same server with zone `Arena`, score `both`, kills of `npcs`, 20 minutes; `rust.npc.place` one `npc.scientist.tethered` at the same monument. Phase 2, after 12 minutes: `rust.participation.collect` | Walk into the zone and stay about five minutes. Kill the scientist while you are inside it, then walk out. At the console, `rg.rewards` shows the run's tally with you in it. The run's participants on the site list you, linked, with `seconds` near 300, one kill, and a score near 5 + 5 × 1 = 10 (D99) |
|
||||
| 2 | **The same, with no zone.** Leave the zone empty and pick score `seconds` | You accrue anywhere on the server. Standing still counts; being dead or asleep does not |
|
||||
| 3 | **A reward while you are offline.** Phase 1: `rust.participation.open`, score `seconds`, 10 minutes. Be on the server for a few minutes, then **log off**. Phase 2, after 12 minutes: `rust.kit.entitle` with kit `<server>/rgreward` and recipients `everyone` | Log back in and open the Kits menu: **`rgreward` is available**. Redeem it (100 wood). It stays available: the credit is one more use (D103). Redeem it again, and now it is exhausted. `rg.rewards` shows your credit as `applied=1 redeemed=1`. An in-app notice *"You earned rgreward on …"* is waiting if you turned on the `rewards-v1` rule |
|
||||
| 4 | **A revert after one redemption.** Repeat step 3, redeem once, then cancel the run | The kit locks again: the permission is gone. The wood stays in your inventory, because the redemption stands (R16). `rg.rewards` shows no credit left |
|
||||
| 5 | **A revert before any redemption.** Repeat step 3 and cancel the run before you open the menu | The kit is locked when you look |
|
||||
| 6 | **Chat.** `rust.announce` to your server, then to `*` | The line appears in your chat once, even if the step retried. With news switched on for your server (Admin → Rust visibility → *News in game chat*), publishing a news post puts its title in your chat |
|
||||
|
||||
**Run steps 1, 3 and 6 on Carbon as well.**
|
||||
|
||||
**What counts as a pass:** the tally counts you while you are in the zone and not while you are out
|
||||
of it; the kill lands on the tally; a reward granted while you were offline is in the menu when you
|
||||
come back; its extra use works exactly once; and a revert takes away the right to redeem but never
|
||||
what you already redeemed.
|
||||
|
||||
Reference in New Issue
Block a user