Properties that only Weapons have - Catman-232/Homebrewery GitHub Wiki

This page was up to date as of version 4.7.0
An item's param.txthb file is a JSON formatted set of properties that HB will try to parse into data. You do not need to have every single property in a file, as any you don't have will be given its default value, which is displayed in each code block below.

The file starts with a left brace: {, property names go in speech marks with a colon afterwards: "property": , values go after the colon and will have a comma after them: 10, or "stringvalue", unless it is the last one in the file: 10 or "stringvalue", and finally the file ends with a right brace }


weaponMesh

"weaponMesh": "",

String
This property is where you define either a vanilla or custom Mesh for the Weapon. It must be the name of a Mesh, such as the ones below.

A custom Mesh example would be: Catman-Homebrewery-Mesh-FryingPan
You can use #local# instead of your mod's name as a convenience, e.g. #local#-Mesh-FryingPan

(CLICK ME) Valid values:
  • Swords
    • "sword_test"
    • "_lightWeapon_blade04" (Used by: Rude and Vile Blades.)
    • "_mediumMelee_sword01" (Used by: Wood Sword.)
    • "_mediumMelee_sword01HB" (Used by: Ironbark Sword.)
    • ""_mediumMelee_sword02" (Used by: Gilded Sword.)
    • "_weapon_blade03" (Used by: Slimecrust Blade and Iron Sword.)
    • "_weapon_blade03_alt00" (Used by: Mithril Sword.)
    • "_weapon_blade05" (Used by: Demicrypt Blade.)
    • "_weapon_blade05_alt00" (Used by: Nethercrypt Blade.)
    • "_weapon_blade06" (Used by: Coldgeist Blade.)
    • "_weapon_blade07" (Used by: Serrated Blade.)
    • "_weapon_blade08" (Used by: Valdur Blade.)
    • "_weapon_blade09" (Used by: Firebreath Blade.)
    • "_weapon_blade10" (Used by: Amberite Sword.)
    • "_weapon_blade11" (Used by: Fier Blade.)
  • Maces
    • "_lightWeapon_mace01" (Used by: Dawn Mace.)
    • "_weapon_mace02" (Used by: Nulrok Mace.)
    • "_weapon_mace03" (Used by: Splitbark Club.)
    • "_weapon_mace04" (Used by: Femur Club.)
    • "_weapon_mace05" (Used by: Dense Mace.)
  • Greatblades
    • "axe_test"
    • "_heavyWeapon_axe01" (Used by: Deadwood Axe.)
    • "_heavyWeapon_axe01HB" (Seems to be a flipped version of Deadwood Axe.)
    • "_heavyWeapon_axe02" (Used by: Dolkian's Axe.)
    • "_heavyWeapon_axe03" (Used by: Ryzer Greataxe.)
    • "_axeHammer_04HB" (Used by: Coldgeist Punisher.)
    • "_axeHammer_04" (Used by: Mini Geist Scythe.)
    • "_heavyWeapon_02" (Used by: Amberite Warstar.)
    • "_geistScythe_big" (Used by: Geist and Poltergeist Scythes.)
    • "_heavyWeapon_greatsword01" (Used by: Stone Greatblade.)
    • "_heavyWeapon_greatsword01_alt00" (Used by: Mithril Greatsword.)
    • "_playerDeathKnightSword" (Used by: Deathknight runeblade.)
  • Hammers
    • "weapon.hammerBasic"
    • "_heavyWeapon_00" (Used by: Quake Pummeler.)
    • "_heavyWeapon_01" (Used by: Dense Hammer.)
    • "_heavyMelee_hammer01" (Used by: Wood Hammer.)
    • "_axeHammer_01"
    • "_axeHammer_02" (Used by: Crypt Pounder.)
    • "_axeHammer_03" (Used by: Slimek and Iron Axehammers.)
  • Polearms
    • "polearm_01" (Used by: Wood and Iron Spears.)
    • "polearm_02" (Used by: Cryptsinge Halberd.)
    • "polearm_02_alt00" (Used by: Necroroyal Halberd.)
    • "polearm_02_alt01" (Used by: Mithril Halberd.)
    • "polearm_03" (Used by: Serrated Spear.)
    • "polearm_04" (Used by: Mekspear.)
    • "polearm_04_alt00" (Used by: Ragespear.)
    • "polearm_05" (Used by: Cryotribe and Flametribe Spears.)
    • "polearm_06" (Used by: Nulrok Spear.)
    • "polearm_07" (Used by: Dense Spear.)
    • "polearm_08" (Used by: Amberite Halberd.)
    • "polearm_09" (Used by: Sapphite Spear.)
    • "polearm_bardiche" (Used by: Sinner Bardiche.)
  • Katars
    • "_lightMelee_dagger01" (Used by: Wood Daggers.)
    • "katar_01" (Used by: Slimecrust, Cryptsinge, and Iron Katars.)
    • "katar_02" (Used by: Runic Katars.)
    • "katar_03" (Used by: Slimek, Deathgel, and Hellsludge Shivs.)
    • "katar_04" (Used by: Geistlord and Frostbite Claws.)
    • "katar_06" (Used by: Mithril Katars.)
    • "katar_07" (Used by: Serrated Knuckles.)
    • "katar_08" (Used by: Golemfist Katars.)
    • "katar_09" (Used by: Rummok Bladerings.)
    • "katar_10" (Used by: Dense Katars.)
    • "katar_11" (Used by: Sapphite Katars.)
  • Bows
    • "bow_01" (Used by: Wooden, Iron, and Mithril Bows.)
    • "bow_02" (Used by: Crypt Bow.)
    • "bow_02_alt00" (Used by: Necroroyal Bow.)
    • "bow_03" (Used by: Mekspike Bow.)
    • 'bow_04" (Used by: Menance Bow.)
    • "bow_05" (Used by: Petrified Bow.)
    • "bow_05_alt00" (Used by: Coldgeist Bow.)
    • "bow_06" (Used by: Serrated Longbow.)
    • "bow_07" (Used by: Torrentius Longbow.)
  • Shotguns
    • "gun_00" (Used by: Magitek Burstgun.)
    • "gun_01" (Used by: Follycannon.)
    • "gun_02" (Used by: Amberite Boomstick.)
  • Scepters
    • "_magicScepter_scepter01" (Used by: Wood Scepter.)
    • "_scepter02" (Used by: Splitbark and Iron Scepters.)
    • "_scepter02_alt00" (Used by: Mithril Scepter.)
    • "_scepter03" (Used by: Slime Diva Baton.)
    • "_scepter04" (Used by: Cryo and Pyre Cane.)
    • "_scepter05" (Used by: Marrow, Demicrypt, and Nethercrypt Baubles.)
    • "_scepter06" (Used by: Aquapetal and Flamepetal Staffs.)
    • "_scepter07" (Used by: Wizwand.)
    • "_scepter08" (Used by: Voalstark Wand.)
    • "_scepter09" (Used by: Sapphite Scepter.)
  • Bells
    • "_bell_01" (Used by: Wooden and Iron Bells.)
    • "_bell_02" (Used by: Cryptcall Bell.)
    • "_bell_03" (Used by: Coldgeist Frostcaller.)
    • "_bell_04" (Used by: Mithril Bell.)
    • "_bell_05" (Used by: Colossus Tone.)
    • "_bell_06" (Used by: Sapphite Bell.)

weaponType

"weaponType": "",

String
This value determines what kind of weapon the game considers the item.

Valid values:

  • Unarmed
  • Blade (formerly "Sword")
  • Mace
  • Greatblade
  • Hammer
  • Polearm
  • Katars
  • Bow
  • Shotgun
  • Scepter
  • Bell

weaponType (LEGACY)

"weaponType": "",

String
The old version of weaponType before vanilla 112025.a3 and Homebrewery 4.6.35, Homebrewery still supports these but its advised you use the new, easier way.
This value determines what kind of weapon the game considers the item.

Valid values:

  • "Unarmed"
  • "Strength_Melee_1H"
  • "Strength_Melee_2H"
  • "Dexterity_Melee_2H"
  • "Dexterity_Ranged_2H"
  • "Mind_Ranged_1H"
  • "Mind_Ranged_2H"

_weaponHoldClipIndex (LEGACY)

Integer (no decimal place allowed)
The old version of weaponType before vanilla 112025.a3 and Homebrewery 4.6.35, Homebrewery still supports these but its advised you use the new, easier way.
This value determines the animation set, it is an index for an array of sets under the weapon's type. Some weapon types only have one set.

Valid values: 0, 1 and 2, the value is clamped to the closest valid index.

  • (weaponType is "Unarmed") -> 0 is "Unarmed"
  • (weaponType is "Strength_Melee_1H") -> 0 is "Sword", 1 is "Mace",
  • (weaponType is "Strength_Melee_2H") -> 0 is "Hammer", 1 is "Greatblade", 2 is "Polearm"
  • (weaponType is "Dexterity_Melee_2H") -> 0 is "Katars"
  • (weaponType is "Dexterity_Ranged_2H") -> 0 is "Bow", 1 is "Shotgun"
  • (weaponType is "Mind_Ranged_1H") -> 0 is "Scepter"
  • (weaponType is "Mind_Ranged_2H") -> 0 is "Bell"

_weaponProjectileSet

"_weaponProjectileSet": "",

String
This value determines what kind of projectile the item fires, if it is actually supposed to, including this on a weaponType that does not fire anything will be redundant. Leaving this empty on a weaponType that is supposed to fire something will cause it to fire nothing at all.

(CLICK ME) Valid values:
  • "arrow" (Used by: Wooden, Crypt, Iron, Demicrypt, Mekspike, Necroroyal, and Mithril Bows)
  • "arrow_nature" (Used by: Menace Bow)
  • "arrow_pierce" (Used by Serrated Longbow)
  • "arrow_shadow" (Used by: Petrified Bow)
  • "arrow_torrentius" (Used by: Torrentius Longbow)
  • "arrow_water" (Used by: Coldgeist Bow)
  • "follycannon" (Used by: Follycannon)
  • "gun_00" (Used by: Amberite Boomstick)
  • "magitekBurstGun" (Used by: Magitek Burstgun)
  • "scepter(ele_fire)_00" (Used by: Pyre Cane)
  • "scepter(ele_fire)_01" (Used by: Flamepetal Staff)
  • "scepter(ele_normal)" (Used by: Wood, Splitbark, Iron, and Mithril Scepters)
  • "scepter(ele_shadow)" (Used by: Marrow and Demicrypt Bauble)
  • "scepter(ele_shadow)_alt00" (Used by: Nethercrypt Bauble)
  • "scepter(ele_water)_00" (Used by: Cryo Cane)
  • "scepter(ele_water)_01" (Used by: Aquapetal Staff)
  • "scepter(sapphite)" (Used by: Sapphite Scepter)
  • "slmDivaBaton" (Used by: Slime Diva Baton)
  • "scepter(voalstark)" (Used by: Voalstark Wand)
  • "scepter(wizscepter)" (Used by: Wizwand)
  • "bell_coldgeist" (Used by: Coldgeist Frostcaller)
  • "bell_colossusTone" (Used by: Colossus Tone)
  • "bell_normal" (Used by: Wood, Iron, and Mithril Bells)
  • "bell_sapphite" (Used by: Sapphite Bell)
  • "bell_shadow" (Used by: Cryptcall Bell)

_hitSound

"_hitSound": "",

String
This property is where you define a sound effect for the weapon to play when you hit something with it (and deal damage). This is quite tricky to actually implement since only the server actually knows you hit something, and what weapon you hit something with, so currently these do not play. They are still imported and set up for being used however.

An example would be: Catman-Homebrewery-SFX-FryingPan-HitSound
You can use #local# instead of your mod's name as a convenience, e.g. #local#-SFX-FryingPan-HitSound


_swingSound

"_swingSound": "",

String
This property is where you define a sound effect for the weapon to play when you swing it. If this property is left blank, HB will assign the default sound effect from the weapon's type.

An example would be: Catman-Homebrewery-SFX-FryingPan-SwingSound
You can use #local# instead of your mod's name as a convenience, e.g. #local#-SFX-FryingPan-SwingSound


_drawSound

"_drawSound": "",

String
This property is where you define a sound effect for the weapon to play when you unsheath it. If this property is left blank, HB will assign the default sound effect from the weapon's type.

An example would be: Catman-Homebrewery-SFX-FryingPan-DrawSound
You can use #local# instead of your mod's name as a convenience, e.g. #local#-SFX-FryingPan-DrawSound


_level

"_level": 1,

Integer (no decimal place allowed)
This is the item level of the weapon, enchantments scale on this value. As you can expect, if your character is lower in level than the weapon is, you can't equip it. Minimum is 1, maximum is the current character level cap (32).


_weaponDamage

"_weaponDamage": 1,

Integer (no decimal place allowed)
This is the base damage value of the weapon, it is the low end of the weapon's damage range. Minimum is 1, maximum is 56 (from Follycannon).


_damageBonus

"_damageBonus": 0,

Integer (no decimal place allowed)
This value, plus _weaponDamage, plus 3 is the high end of the weapon's damage range. Minimum is 1, maximum is 16 (from Follycannon). For example, a weapon with _weaponDamage set to 5, and _damageBonus set to 2, should show a damage range of 5 - 10 (5 + 2 + 3).


_combatElement

"_combatElement": -1,

Integer (no decimal place allowed)
This value determines the damage element for the weapon, if any. Leaving this set to -1 will leave the weapon without an element, unless it has a _weaponProjectileSet, in which case it defaults to 0 "Normal". Vanilla weapons don't all have an element assigned unless the weapon shoots projectiles, in which case those are set to "Normal" element if nothing else.

Valid values:

  • -1 -> No element (or Normal if it has projectiles)
  • 0 -> "Normal"
  • 1 -> "Fire"
  • 2 -> "Water"
  • 3 -> "Nature"
  • 4 -> "Earth"
  • 5 -> "Holy"
  • 6 -> "Shadow"

_scriptableCondition

Important

This property and the associated ones below (chance, duration, power), have been removed from the Scriptable type in version 12026.a1, so they currently do nothing. They might return or they might just be gone, I don't know yet.

"_scriptableCondition": "",

String
This property lets you add a chance based condition effect that can apply on hit. The valid values for this are the conditions that vanilla weapons have a chance to proc.
All conditions come with base stats, which are listed below and can be modified by the next three properties.

Valid values:

  • "Gash" (3 Bleed damage every ~0.4sec for 5 seconds or 12 ticks)
  • "Hex" (-15% Movespeed and -5 atk/dex/mag power for 5 seconds)
  • "Brittle" (-5 Defense for 5 seconds)
  • "Burn" (5 Fire dmg per 2.5sec for 5 seconds or 3 ticks)
  • "Cold" (-15% Movespeed and -3 water resistance for 5 seconds)
  • "Poison" (3 Poison damage per 2.5sec for 5 seconds or 3 ticks)

_chance

"_chance": 0.0,

Float (decimal places allowed)
This property specifies the odds of the condition effect applying on hit. If a valid condition is added to the weapon, the value's minimum is 0.001 (0.1%). The maximums are mostly 0.12 (12%) but Burn and Cold have a higher maximum of 0.2 (20%).


_bonusPower

"_bonusPower": 0,

Integer (no decimal place allowed)
This property buffs or debuffs the damage of the effect, minimum is -3. Maximums are determined by the effect, not all of them can actually be above 0, since this is intending to mimic the vanilla weapons.

  • "Gash" : 0
  • "Hex" : 0
  • "Brittle" : 0
  • "Burn" : 3
  • "Cold" : 7
  • "Poison" : 5

_bonusDuration

"_bonusDuration": 0,

Integer (no decimal place allowed)
This property buffs or debuffs the length (in seconds) of the effect, minimum is -3. Maximums are determined by the effect, Gash can't actually be above 0, since this is intending to mimic the vanilla weapons.

  • "Gash" : 0
  • "Hex" : 5
  • "Brittle" : 7
  • "Burn" : 2
  • "Cold" : 2
  • "Poison" : 2

_trailColor1

"_trailColor1": "#FFF",

String
This property lets you customise the colours of the particle effects that show up when you swing the weapon. Expected values are either Hexadecimal colour codes (e.g. #FF0000), or HTML colour names. The colour codes can be RGB, RRGGBB, RGBA or RRGGBBAA format, the alpha doesn't seem to do anything though.

This works because the game is using the Color struct for setting the colours and Unity has some convenient utility methods for converting those structs to and from HTML colours. The default is White because the base ScriptableWeapon uses Color.white for the first index of the trail colours array.

Swords, Maces, Greatblades, Hammers, Polearms, Scepters, and Bells use this to colour the second half of their trails.
Unarmed only uses trail 1.


_trailColor2

"_trailColor2": "#F00",

String
Similar to the first but primarily used for particles other than swings, such as charge attacks or slams. It is also used in combination with trail 1 to create a gradient trail effect, it takes up the first half of the trail while trailColor1 takes up the second half of the trail.

The default is Red because the base ScriptableWeapon uses Color.red for the second index of the trail colours array.

Same weapons as earlier use this to colour all their particles.
Bows and Shotguns only use trail 2.


_itemRarity

"_itemRarity": "0",

String
This property allows you to set the rarity of the weapon, this can be Common, Rare or Exotic. Bear in mind that Exotic items cannot be enchanted! You can use numbers as shorthand, but it's still a string property so don't remove the speechmarks.

Valid values:

  • For Common: 0 OR "Common"
  • For Rare: 1 OR "Rare"
  • For Exotic: 2 OR "Exotic

_enchantCostItem

"_enchantCostItem": "Rock",

String
This property lets you define an item the game will use as the material cost for enchanting the weapon, you can use vanilla items here by their display name. If there isn't an exact match, HB will attempt to partially match via checking all item's object names to find anything that starts with the text, and if it finds anything it will take the first match. A warning will be logged if there is more than one match.

A value like "Scrap Metal" might be fine until someone else makes an item in a pack also named that, to prevent it from potentially picking the wrong one, you can be more specific by adding the content pack folder's name to the string like "Scrap Metal-Catman-Homebrewery"
You can use #local# instead of your mod's name as a convenience, e.g. Scrap Metal-#local#

The default is the Rock, like the Iron weapons use. You can use an empty string to make the item have no cost item.


_enchantCostAmount

"_enchantCostAmount": 1,

Integer (no decimal place allowed)
Sets how many of the _enchantCostItem it takes to enchant the weapon. If the item is left to be the default (Rock), this will be set to 5. Otherwise the value is 1, and this is the minimum value too.


_vendorCost

"_vendorCost": 1,

Integer (no decimal place allowed)
Sets the value of the item, which the game multiplies by 3 to determine the monetary cost for enchanting the item, this does not affect the buy price of the item. Maximum is 2820 (from Fier Blade).


_statStruct

"_statStruct": {
  "_defense": 0,
  "_magicDefense": 0,
  "_maxHealth": 0,
  "_maxMana": 0,
  "_maxStamina": 0,
  "_attackPower": 0,
  "_magicPower": 0,
  "_dexPower": 0,
  "_criticalRate": 0.0,
  "_magicCriticalRate": 0.0,
  "_evasion": 0.0,
  "_fireResist": 0,
  "_waterResist": 0,
  "_natureResist": 0,
  "_earthResist": 0,
  "_holyResist": 0,
  "_shadowResist": 0
},

StatStruct - a mix of Integers and Floats
This is a nested struct property with a dozen of its own properties, the ones listed in the code block are all of them, but not all of them are part of vanilla weapons. The available property values are the ones that vanilla weapons are using, but they are currently uncapped, 100 for integers and 25% for floats (including the values listed earlier on this page, except conditions).

You don't need to have them in all in there if you are not using them, but make sure the last one does not have a comma at the end of the line!

Valid values:

  • _defense (Integer) 0 to 5
  • _magicDefense (Integer) X to X
  • _maxHealth (Integer) X to X
  • _maxMana (Integer) 0 to 8
  • _maxStamina (Integer) 0 to 12
  • _attackPower (Integer) 0 to 18
  • _magicPower (Integer) 0 to 15
  • _dexPower (Integer) 0 to 21
  • _criticalRate (Float) 0.0 to 0.045 (4.5%)
  • _magicCriticalRate (Float) 0 to 0.025 (2.5%)
  • _evasion (Float) 0.0 to 0.028 (2.8%)
  • _fireResist (Integer) X to X
  • _waterResist (Integer) X to X
  • _natureResist (Integer) X to X
  • _earthResist (Integer) X to X
  • _holyResist (Integer) X to X
  • _shadowResist (Integer) X to X
⚠️ **GitHub.com Fallback** ⚠️