docs(rust): §5 compiled on both rigs, and what the item-list probe corrected

PLAN_REDESIGNS 5.8 records the probe's lists and the three members it corrected; PROTOCOL 19.10 names the crafter, the mission assignee and the heal target as built.

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-29 02:07:30 -05:00
parent e3c5d7128c
commit e8f0ff2407
2 changed files with 22 additions and 7 deletions

View File

@@ -527,7 +527,7 @@ shirt and a weapon; build and repair a wall; bandage and revive another player;
destroy an APC; shoot down a helicopter; finish a mission and abandon one. Each count is checked in the tally destroy an APC; shoot down a helicopter; finish a mission and abandon one. Each count is checked in the tally
frame and on the titles screen. frame and on the titles screen.
### 5.8 As built (2026-09-28; not yet walked) ### 5.8 As built (2026-09-28/29; compiled on both rigs, not yet walked)
Rust-Plugins `feat/title-conditions`, Module-Rust `feat/title-conditions`. The wire is Rust-Plugins `feat/title-conditions`, Module-Rust `feat/title-conditions`. The wire is
[`PROTOCOL.md`](../../rust-link/PROTOCOL.md) §19.10, and the admin API is the module's swagger fragment [`PROTOCOL.md`](../../rust-link/PROTOCOL.md) §19.10, and the admin API is the module's swagger fragment
@@ -564,9 +564,24 @@ walk database held one such rule.
built rather than waiting for the walk, because proving it unnecessary needs a helicopter shot down built rather than waiting for the walk, because proving it unnecessary needs a helicopter shot down
first. first.
**Still to do before the walk:** the weapon lists are from knowledge of the game, not yet read off the **Read off the rig, 2026-09-29.** A read-only probe walked the live server's `ItemManager.itemList` and named
rig's item list. A read-only probe that lists every held item's prefab and class is written, and it runs each held entity's prefab and class. The lists in `lists.js` are that output, not memory: the revolvers are
once the rigs' storage is back (it was unmounted on 2026-09-28, §5.7's walk waits on it too). `pistol_revolver`, `python` and `hc_revolver` (there is no `revolver.entity`); the bows include the legacy
bow, the mini crossbow and the bowless crossbow, and leave out the speargun, a crossbow underneath; melee is
every `BaseMelee` except the pies (`Food` is a `BaseMelee` too). C4, the satchel and the beancan are all
`TimedExplosive` subclasses, so §5.1's explosive test holds. The same probe corrected three members the
plan had assumed, each of which would not have compiled or would never have been called:
- `ItemCraftTask` has no owner; the crafter is `ItemCrafter.owner`.
- A mission's assignee is the hook's third argument (`MissionSuccess(instance, assignee)`); the instance
has no accessor for it.
- `MedicalTool.GiveEffectsTo` now takes an `IMedicalToolTarget`, so `OnHealingItemUse` takes its target as
`object` and counts only a player.
**Compiled on both rigs, 2026-09-29.** `rust-oxide` (a fresh install on the published egg) and
`rust-carbon`: all 45 hooks bound, and `OnEntityTakeDamage` fires on world damage with nobody on (53 and
109 in the first half-minute), which is the cost the helicopter credit was expected to have. The other nine
new hooks need a player: that is §5.7's walk.
--- ---

View File

@@ -2268,13 +2268,13 @@ frame from an older plugin has none:
| `headshots` | the killing blow's `HitInfo.isHeadshot`, any victim | | | `headshots` | the killing blow's `HitInfo.isHeadshot`, any victim | |
| `bestPvpM`, `bestPveM` | the killfeed's distance | **This interval's maximum, not a sum.** The site keeps the running best with `GREATEST`. PvE is NPCs and animals | | `bestPvpM`, `bestPveM` | the killfeed's distance | **This interval's maximum, not a sum.** The site keeps the running best with `GREATEST`. PvE is NPCs and animals |
| `apcKills`, `heliKills` | `OnEntityDeath`, victim `BradleyAPC`; `PatrolHelicopter` or `CH47Helicopter` | The killing blow's player (D174). A patrol helicopter usually dies by crashing and its blow names nobody, so **the last player who hurt it within 60 s** is credited instead, recorded by `OnEntityTakeDamage` for those three types only | | `apcKills`, `heliKills` | `OnEntityDeath`, victim `BradleyAPC`; `PatrolHelicopter` or `CH47Helicopter` | The killing blow's player (D174). A patrol helicopter usually dies by crashing and its blow names nobody, so **the last player who hurt it within 60 s** is credited instead, recorded by `OnEntityTakeDamage` for those three types only |
| `crafted` | `OnItemCraftFinished`, by `item.info.category` lower-cased | Every category is sent; the site reads `attire` and `weapon`. Counts `item.amount` | | `crafted` | `OnItemCraftFinished`, by `item.info.category` lower-cased | Every category is sent; the site reads `attire` and `weapon`. Counts `item.amount`. The crafter is `ItemCrafter.owner` (the task carries none) |
| `built` | `OnEntityBuilt` placing a `BuildingBlock` | A deployable is not a structure | | `built` | `OnEntityBuilt` placing a `BuildingBlock` | A deployable is not a structure |
| `repaired` | `OnStructureRepair` | The hook fires on every hammer hit **before** the game decides there is anything to repair, the resources for it, or no recent attack. So the health is read then and again next tick, and only a hit that raised it counts | | `repaired` | `OnStructureRepair` | The hook fires on every hammer hit **before** the game decides there is anything to repair, the resources for it, or no recent attack. So the health is read then and again next tick, and only a hit that raised it counts |
| `healed` | `OnHealingItemUse` on **another** player; `OnPlayerRevive` | Yourself never counts (D174). A syringe on a downed player raises both hooks for one use; it counts once | | `healed` | `OnHealingItemUse` on **another** player; `OnPlayerRevive` | Yourself never counts (D174). A syringe on a downed player raises both hooks for one use; it counts once. The heal's target is an `IMedicalToolTarget` in current Rust, so the bridge takes it as `object` and counts only a player |
| `rockets` | `OnRocketLaunched` | | | `rockets` | `OnRocketLaunched` | |
| `explosives` | `OnExplosiveThrown`, `OnExplosiveDropped` | A `TimedExplosive` that deals damage: a supply signal and a smoke grenade go through the same hooks and do not count | | `explosives` | `OnExplosiveThrown`, `OnExplosiveDropped` | A `TimedExplosive` that deals damage: a supply signal and a smoke grenade go through the same hooks and do not count |
| `missions` | `OnMissionSucceeded` | Rust's own NPC missions (D173). A failed or abandoned one raises a different hook and never counts | | `missions` | `OnMissionSucceeded(mission, instance, assignee)` | Rust's own NPC missions (D173), credited to the hook's `assignee`. A failed or abandoned one raises a different hook and never counts |
**All ten hooks are `void`** (§8.7). Four of them can veto — `OnStructureRepair`, `OnHealingItemUse`, **All ten hooks are `void`** (§8.7). Four of them can veto — `OnStructureRepair`, `OnHealingItemUse`,
`OnPlayerRevive`, and `OnEntityTakeDamage`, which cancels the damage — and none returns anything. All ten `OnPlayerRevive`, and `OnEntityTakeDamage`, which cancels the damage — and none returns anything. All ten