docs(rust): plan fixes — D173 quests are Rust's own missions, D174 title rules
D173: "Quests completed" (Wayfarer) counts the missions Rust's NPCs already hand out; no quest plugin. uMod's catalogue names no mission hook and CARBON.md lists none, so the detailed plan starts with a rig spike: a framework hook if one exists at build time, else reading the player's mission list at each tally flush, else a D168 helper patch. D174 adopts §4.6's recommended title rules (best columns for kill distance, weapon-class kills count every credited kill, killing-blow credit for APC/heli, heals of others only). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# `module-rust` — plan fixes
|
||||
|
||||
**Status:** plan, awaiting the org lead's approval, 2026-09-26; its four open questions were answered the same
|
||||
day (D169–D172). **Everything in it — fixes and redesigns alike — lands before Module-Rust's cutover
|
||||
day (D169–D174). **Everything in it — fixes and redesigns alike — lands before Module-Rust's cutover
|
||||
(phase 19, [`PLAN.md`](PLAN.md) §34, D145; D169).** Everything here comes from the first walk of
|
||||
[`PLAYER_WALK.md`](../../rust-link/PLAYER_WALK.md) with a real player in the game — the Oxide pass, walked by
|
||||
the org lead on the `rust-oxide` rig with every frame checked on the console, the sidecar and the site's
|
||||
@@ -56,6 +56,8 @@ Taken by the org lead during and straight after the walk.
|
||||
| **D170** | **An expired zone is marked expired on the site.** Once F13 makes `world.expired` recognisable, ingest marks the run's resource row `expired`. This amends D96's "the website maps it to nothing". F14. |
|
||||
| **D171** | **Steam sign-in belongs to the website's own plan and is part of the base website**, exposed to modules however they need it. It leaves this document (§4.8). |
|
||||
| **D172** | **Chat titles use all twenty-three conditions the org lead listed, under new names** (§4.6). Rejected: a first subset. |
|
||||
| **D173** | **"Quests completed" counts Rust's own missions** — the ones the game's NPCs already hand out on the map. No quest plugin. How the bridge detects a completed mission is settled by a spike on the rig (§4.6), because uMod's catalogue names no mission hook and [`CARBON.md`](CARBON.md) lists none among Carbon's own. |
|
||||
| **D174** | **The title rules §4.6 recommended are adopted:** the two kill-distance titles are *best* columns (the longest single kill), not sums; a weapon-class kill counts any kill the player is credited with (players, NPCs, animals), from weapon lists kept in one place; the APC and the helicopter credit the killing blow; healing counts only other players. |
|
||||
|
||||
## 2. Fixes
|
||||
|
||||
@@ -288,20 +290,36 @@ path requires (PROTOCOL.md §8.7), and each must be checked on Carbon, whose cat
|
||||
| Players healed | **Mender** | healing *another* player — `OnHealingItemUse` on someone else, and `OnPlayerRevive` |
|
||||
| Rockets fired | **Artillerist** | `OnRocketLaunched` |
|
||||
| Explosives thrown | **Demolitionist** | `OnExplosiveThrown` and `OnExplosiveDropped` |
|
||||
| Quests completed | **Wayfarer** | a quest plugin — none is installed; choose one, or a D168 helper |
|
||||
| Quests completed | **Wayfarer** | Rust's own NPC missions (D173) — detection settled by the spike below |
|
||||
|
||||
What the detailed plan has to settle before building:
|
||||
The rules, adopted (D174):
|
||||
|
||||
- **Two kinds of column.** Every existing leaderboard column is a sum; the two distance titles need a *best* (the
|
||||
- **Two kinds of column.** Every existing leaderboard column is a sum; the two distance titles are a *best* (the
|
||||
largest single value). The tally carries the interval's maximum, and the site keeps the running best.
|
||||
- **What a weapon-class kill counts.** Recommended: any kill the player is credited with — players, NPCs and
|
||||
animals — so Fletcher rewards a hunter as well as a raider. The weapon lists (bow, blade, revolver) are named
|
||||
sets in one place, so a Rust update adds a weapon by editing a list.
|
||||
- **Credit for a vehicle kill.** The APC and the helicopter are usually killed by several people. Credit the player
|
||||
who dealt the killing blow (`HitInfo.InitiatorPlayer`) — simple, and the rule the killfeed already uses.
|
||||
- **Healing someone else**, never yourself — otherwise Mender is earned by bandaging after every fight.
|
||||
- **A weapon-class kill counts any kill the player is credited with** — players, NPCs and animals — so Fletcher
|
||||
rewards a hunter as well as a raider. The weapon lists (bow, blade, revolver) are named sets in one place, so a
|
||||
Rust update adds a weapon by editing a list.
|
||||
- **A vehicle kill goes to the killing blow.** The APC and the helicopter are usually killed by several people;
|
||||
credit the player who dealt the last hit (`HitInfo.InitiatorPlayer`) — the rule the killfeed already uses.
|
||||
- **Healing counts only other players**, never yourself — otherwise Mender is earned by bandaging after every fight.
|
||||
- **Counters are aggregates** (rule 2): all of these ride on `player.tally`, never one frame per shot, craft or swing.
|
||||
- **Quests** wait on a quest plugin; the other twenty-two do not.
|
||||
|
||||
**Wayfarer: Rust's own missions (D173).** The game already has quests — the missions its NPCs hand out at
|
||||
monuments — so no quest plugin is installed and none is needed. What is not known is how to see one finish:
|
||||
**uMod's hook catalogue ([`HOOKS.md`](HOOKS.md)) names no mission hook, and [`CARBON.md`](CARBON.md) lists none
|
||||
among Carbon's own**, so the detailed plan
|
||||
starts with a spike on the rig, trying in this order and keeping the first that works on both frameworks:
|
||||
|
||||
1. **A framework hook** the catalogues missed — check Oxide's and Carbon's current hook lists at build time, since
|
||||
both grow with Rust updates.
|
||||
2. **Read the game's own record.** The player object keeps its missions and their status; at each tally flush the
|
||||
plugin counts the ones that became *completed* since the last flush. No hook, main thread, public fields only
|
||||
(R2). The spike confirms the field names and statuses against the live server's assembly.
|
||||
3. **A D168 helper** that patches mission completion (both frameworks load Harmony) and raises a hook the bridge
|
||||
subscribes to — the last resort, because a patch breaks when Facepunch changes the method.
|
||||
|
||||
The spike's pass condition is a person on the rig taking a mission from an NPC, finishing it, and seeing Wayfarer's
|
||||
count move by exactly one — and not moving for a mission abandoned or failed.
|
||||
|
||||
### 4.7 NPCs
|
||||
|
||||
@@ -374,11 +392,11 @@ After step 2 of §6, on both frameworks:
|
||||
## 9. Answered, and what stays open
|
||||
|
||||
The four questions this plan first asked were answered on 2026-09-26: the gate (D169), F14 (D170), Steam sign-in
|
||||
(D171) and the title conditions (D172).
|
||||
(D171) and the title conditions (D172) — then quests (D173) and the title rules (D174).
|
||||
|
||||
Left for the detailed plans of §6 step 3, none of them blocking the fixes:
|
||||
|
||||
1. The quest plugin behind Wayfarer — or a D168 helper.
|
||||
1. How a completed mission is detected — the spike in §4.6 (D173).
|
||||
2. Whether the plugin or the site filters monument types (§4.5).
|
||||
3. The ZoneDomes default type and stack, chosen by looking at each on the rig (§4.4).
|
||||
4. The NPC route — a plugin, or extending `rust.npc.place` (§4.7).
|
||||
|
||||
Reference in New Issue
Block a user