fix(rust): the title weapon and plant lists, read off the rig's own item list
All checks were successful
PR Checks / client-build (pull_request) Successful in 26s
PR Checks / server-tests (pull_request) Successful in 30s
PR Checks / frozen-manifest (pull_request) Successful in 43s

A read-only probe walked ItemManager.itemList on rust-oxide (2026-09-29). Revolvers are pistol_revolver, python and hc_revolver; bows add the legacy bow, the mini crossbow and the bowless crossbow and leave out the speargun; melee is every BaseMelee except the pies; blades add the obsidian, sunken and skinning knives and the chainsword; plants add wheat and the two wild berries.

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:29 -05:00
parent aea94b5d7a
commit cf63b902bf

View File

@@ -1,4 +1,4 @@
// ── The named lists behind five title categories (PLAN_REDESIGNS §5.3, D174) ── // ── The named lists behind seven title categories (PLAN_REDESIGNS §5.3, D174) ──
// //
// "In one place, so a Rust update adds a weapon by editing a list." The plugin // "In one place, so a Rust update adds a weapon by editing a list." The plugin
// sends every credited kill by weapon SHORT PREFAB NAME — the name the killfeed // sends every credited kill by weapon SHORT PREFAB NAME — the name the killfeed
@@ -6,54 +6,98 @@
// shortname (`sulfur.ore`). These lists are applied when a title is READ, so // shortname (`sulfur.ore`). These lists are applied when a title is READ, so
// editing one corrects the whole wipe and no plugin release is needed. // editing one corrects the whole wipe and no plugin release is needed.
// //
// Melee is a list too: the site cannot ask the game whether a prefab is a // Read off a live server's own item list on 2026-09-29 (a read-only probe that
// `BaseMelee`. A blade is a melee weapon, so every blade is in both. // walked `ItemManager.itemList` and named each held entity's prefab and class),
// not written from memory. To refresh after a Rust update, do the same.
// //
// UNVERIFIED: the weapon names below are from knowledge of the game, not yet // bow every `BowWeapon`, `CrossbowWeapon` and `MiniCrossbow` — except the
// read off the rig's own item list (the RgWeapons probe). Replace them with the // speargun, which is a crossbow underneath and not a bow to a player
// probe's output before this ships. // melee every `BaseMelee`, except the pies (`Food` is a `BaseMelee` too,
// because eating is a swing)
// blade the machete, the swords, the knives and the cleaver, as §4.6 names
// them; every blade is in melee as well
// revolver the revolver, the python and the high-caliber revolver
const BLADES = [ const BLADES = [
'machete.weapon', 'machete.weapon',
'salvaged_sword.entity', 'salvaged_sword.entity',
'longsword.entity', 'longsword.entity',
'krieg_chainsword.entity',
'salvaged_cleaver.entity', 'salvaged_cleaver.entity',
'knife_bone.entity', 'knife_bone.entity',
'bone.knife.obsidian.entity',
'knife.combat.entity', 'knife.combat.entity',
'sunken.knife.combat.entity',
'butcherknife.entity', 'butcherknife.entity',
'skinningknife.entity',
] ]
const lists = { const lists = {
bow: ['bow_hunting.entity', 'compound_bow.entity', 'crossbow.entity'], bow: [
'bow_hunting.entity',
'compound_bow.entity',
'legacybow.entity',
'crossbow.entity',
'crossbow_bowless.entity',
'mini_crossbow.entity',
],
blade: BLADES, blade: BLADES,
melee: [ melee: [
...BLADES, ...BLADES,
'axe_salvaged.entity',
'bone_club.entity', 'bone_club.entity',
'mace.entity', 'boomerang.entity',
'spear_wooden.entity', 'cake.entity',
'spear_stone.entity', 'candy_cane.entity',
'chainsaw.entity',
'cny_spear.entity',
'concrete_hatchet.entity',
'concrete_pickaxe.entity',
'diver_hatchet.entity',
'diver_pickaxe.entity',
'diver_torch.entity',
'flashlight.entity',
'frontier_hatchet.entity',
'hammer.entity',
'hammer_salvaged.entity',
'handcuffs.entity',
'hatchet.entity', 'hatchet.entity',
'stonehatchet.entity', 'icepick_salvaged.entity',
'pickaxe.entity', 'industrial_torch.entity',
'stone_pickaxe.entity', 'jackhammer.entity',
'salvaged_axe.entity', 'lumberjack_axe.entity',
'salvaged_hammer.entity', 'lumberjack_pick.entity',
'salvaged_icepick.entity', 'mace.baseballbat',
'rock.entity', 'mace.entity',
'torch.entity',
'paddle.entity', 'paddle.entity',
'pickaxe.entity',
'pitchfork.entity', 'pitchfork.entity',
'rock.a.jungle.entity',
'rock.entity',
'shovel.entity',
'sickle.entity', 'sickle.entity',
'skull.entity',
'skulltorch.entity',
'snowball.entity',
'spear_stone.entity',
'spear_wooden.entity',
'stone_pickaxe.entity',
'stonehatchet.entity',
'toolgun.entity',
'torch.entity',
'vampirestake.entity',
], ],
revolver: ['revolver.entity', 'python.entity'], revolver: ['pistol_revolver.entity', 'python.entity', 'hc_revolver.entity'],
// Gathering (D159: all three sources, already in `rust_gather_totals`). // Gathering (D159: all three sources, already in `rust_gather_totals`).
wood: ['wood'], wood: ['wood'],
ore: ['metal.ore', 'sulfur.ore', 'hq.metal.ore'], ore: ['metal.ore', 'sulfur.ore', 'hq.metal.ore'],
// Hemp picks up as cloth; a seed that comes with a plant is not the plant. // Hemp picks up as cloth. A seed or a clone that comes with a plant is not
// the plant, and neither is anything cooked from one.
plants: [ plants: [
'cloth', 'cloth',
'corn', 'corn',
'wheat',
'pumpkin', 'pumpkin',
'potato', 'potato',
'mushroom', 'mushroom',
@@ -63,6 +107,8 @@ const lists = {
'yellow.berry', 'yellow.berry',
'white.berry', 'white.berry',
'black.berry', 'black.berry',
'blueberries',
'black.raspberries',
'rose', 'rose',
'orchid', 'orchid',
'sunflower', 'sunflower',