From cf63b902bfbbf7751e5ac568b692fbcd24b54ba5 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Tue, 29 Sep 2026 02:07:29 -0500 Subject: [PATCH] fix(rust): the title weapon and plant lists, read off the rig's own item list 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 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- server/model/titles/lists.js | 86 +++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 20 deletions(-) diff --git a/server/model/titles/lists.js b/server/model/titles/lists.js index 87e8dee..40285a4 100644 --- a/server/model/titles/lists.js +++ b/server/model/titles/lists.js @@ -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 // 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 // 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 -// `BaseMelee`. A blade is a melee weapon, so every blade is in both. +// Read off a live server's own item list on 2026-09-29 (a read-only probe that +// 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 -// read off the rig's own item list (the RgWeapons probe). Replace them with the -// probe's output before this ships. +// bow every `BowWeapon`, `CrossbowWeapon` and `MiniCrossbow` — except the +// speargun, which is a crossbow underneath and not a bow to a player +// 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 = [ 'machete.weapon', 'salvaged_sword.entity', 'longsword.entity', + 'krieg_chainsword.entity', 'salvaged_cleaver.entity', 'knife_bone.entity', + 'bone.knife.obsidian.entity', 'knife.combat.entity', + 'sunken.knife.combat.entity', 'butcherknife.entity', + 'skinningknife.entity', ] 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, melee: [ ...BLADES, + 'axe_salvaged.entity', 'bone_club.entity', - 'mace.entity', - 'spear_wooden.entity', - 'spear_stone.entity', + 'boomerang.entity', + 'cake.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', - 'stonehatchet.entity', - 'pickaxe.entity', - 'stone_pickaxe.entity', - 'salvaged_axe.entity', - 'salvaged_hammer.entity', - 'salvaged_icepick.entity', - 'rock.entity', - 'torch.entity', + 'icepick_salvaged.entity', + 'industrial_torch.entity', + 'jackhammer.entity', + 'lumberjack_axe.entity', + 'lumberjack_pick.entity', + 'mace.baseballbat', + 'mace.entity', 'paddle.entity', + 'pickaxe.entity', 'pitchfork.entity', + 'rock.a.jungle.entity', + 'rock.entity', + 'shovel.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`). wood: ['wood'], 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: [ 'cloth', 'corn', + 'wheat', 'pumpkin', 'potato', 'mushroom', @@ -63,6 +107,8 @@ const lists = { 'yellow.berry', 'white.berry', 'black.berry', + 'blueberries', + 'black.raspberries', 'rose', 'orchid', 'sunflower',