Skip to content

Custom items

Custom magical objects are the one confirmed clone-and-patch kind: verified in-game, no experimental opt-in, no loader required. Confirmed

An item mod is a manifest.toml and nothing else. You pick a vanilla item to clone, rename it, repoint its icon, and retune its numbers; rsmm apply cooks the definition and registers it.

  1. Scaffold from a real base.

    Terminal window
    ./rsmm new IronCrabHide --kind item --base Common/Armor_Per_Object \
    --name "Iron Crab Hide" --desc "Bonus armor per rare object collected."

    Run it without --base at a terminal and you get a searchable picker of every vanilla item instead. Both spellings of a base work — the bare Armor_Per_Object or the rarity-qualified Common/Armor_Per_Object.

  2. Read what it wrote.

    mods/IronCrabHide/manifest.toml
    [[content]]
    kind = "item"
    id = "IronCrabHide_item_1"
    base = 'Common/Armor_Per_Object'
    name = 'Iron Crab Hide'
    description = 'Bonus armor per rare object collected.'
    rarity = 'Common'
    icon = 'Objects\UI_Object_GreenArmor.png'
    value_patches = [['Armor per Object Value', 2.0, 2.0]]

    The icon, rarity and every value_patches entry are read out of the base you chose, not templated. The third number in each patch is the one you change; it starts equal to the current value, so the scaffold applies unchanged.

  3. Retune and check.

    Terminal window
    ./rsmm items show Common/Armor_Per_Object # every editable label + default
    ./rsmm lint IronCrabHide
    ./rsmm apply
Terminal window
./rsmm items list --rarity Common --grep armor
./rsmm items icons --grep crab # usable icon stems
./rsmm items show Damage_Power # labels, defaults, [shadowed] markers

The base decides the item’s mechanic — cloning is a byte-level copy with the name, description, icon and magnitudes rewritten. There is no way to author a brand-new effect from the manifest; pick the vanilla item whose behaviour you want and retune it.

rsmm new deliberately leaves two classes of value field out of the scaffold, and prints a note for each it skipped:

  • Shadowed labels. The inline float is overridden by a selector (a card count, a stack counter), so patching it changes nothing. set_value_after_label refuses these outright, and rsmm items show marks them.
  • Labels whose default doesn’t round-trip. rsmm items show discovers value fields best-effort, and occasionally reports a (label, default) pair that can’t be re-found for patching. Seeding one would make the scaffold fail its own lint, so it’s dropped.

rsmm apply writes the cooked entity under EntitySettings/Objects/Magical_Objects/<rarity>/, appends the name and description to the Magical_Objects~GAM.xls text bank, and registers the new path so the engine loads it — the same UsedRscList.ot registration every new asset goes through. Removing the mod is ./rsmm restore --all.