From e8f0ff240731ae69320b739d5f0e764278b0bc16 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Tue, 29 Sep 2026 02:07:30 -0500 Subject: [PATCH] =?UTF-8?q?docs(rust):=20=C2=A75=20compiled=20on=20both=20?= =?UTF-8?q?rigs,=20and=20what=20the=20item-list=20probe=20corrected?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- modules/rust/PLAN_REDESIGNS.md | 23 +++++++++++++++++++---- rust-link/PROTOCOL.md | 6 +++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/modules/rust/PLAN_REDESIGNS.md b/modules/rust/PLAN_REDESIGNS.md index eed572a..d716f3a 100644 --- a/modules/rust/PLAN_REDESIGNS.md +++ b/modules/rust/PLAN_REDESIGNS.md @@ -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 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 [`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 first. -**Still to do before the walk:** the weapon lists are from knowledge of the game, not yet read off the -rig's item list. A read-only probe that lists every held item's prefab and class is written, and it runs -once the rigs' storage is back (it was unmounted on 2026-09-28, §5.7's walk waits on it too). +**Read off the rig, 2026-09-29.** A read-only probe walked the live server's `ItemManager.itemList` and named +each held entity's prefab and class. The lists in `lists.js` are that output, not memory: the revolvers are +`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. --- diff --git a/rust-link/PROTOCOL.md b/rust-link/PROTOCOL.md index 00fb130..83ea443 100644 --- a/rust-link/PROTOCOL.md +++ b/rust-link/PROTOCOL.md @@ -2268,13 +2268,13 @@ frame from an older plugin has none: | `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 | | `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 | | `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` | | | `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`, `OnPlayerRevive`, and `OnEntityTakeDamage`, which cancels the damage — and none returns anything. All ten