Mass Edit Commands exist to make large batch-edits according to a simple scheme. Specific help with individual components of massedit can be found in the autofill menu by clicking the ? button in Smithbox.
The autofill is a valuable tool to help understand massedits. Feel free to experiment, you can undo a massedit.
A mass edit command is formed of selectors and an operation. There are multiple stages of selection when making a param massedit, going from params, to rows, to cells (fields).
Finally, an operation is applied to everything selected.
A selector has a name, such as the row selector 'prop', and can have arguments, separated by spaces.
In this case, prop expects the property name, and a value that the row should have to be selected. All rows which match this are kept, while everything else is discarded. This process repeats for each condition, and across each stage of selection. There exists a special case of selector, which combines both param and row selectors into one key word. Most commonly this is the 'selection' selector, which selects currently selected rows in the currently selected param. Unlike the search bar selections, selections in massedit apply stricter criteria, needing to match exactly.
An operation also has a name, though often this is a symbol, such as '+', and has arguments. An operation's arguments begin after the first space, but are actually separated with another : when there are multiple. This is because the argument may also have arguments itself, separated with spaces. For example, the argument 'field weight'. Instead of a fixed number, for each param, row and cell evaluated, a value to use is determined. In this case, the number to add depends on the row we're currently in, and retrieves a different weight value each row.
The following is for advanced topics, and requires you to enable advanced options in the settings.
Massedit can do more than modify final values of the currently loaded params. Afer selecting rows, it is possible to perform a row operation instead of selecting cells/fields. These operations act on rows instead, including copying them into clipboard, or pasting them into the current params. There exists also global operations, which require no selectors beforehand, such as clear to clear the clipboard. The clipboard only supports 1 param at a time, and can be selected from in the same manner as current UI selection.
When an additional set of params (parambank) is loaded, aux selectors and arguments become available. With these, one can make a selection of not the currently loaded params, but from an auxilliary set. While it is not ideal to modify these with cell operations, they are useful for row operations, including passing rows between parambanks.
Massedit can also define variables for use, mostly in scripts. A variable's type is dictated when defined in a global operation. It can be an integer, floating point number, or a string. A variable's current value can be accessed using $name, and is usable in selector args, op args, and even the args of those op args. Sets of vars can be selected in the same manner as params, and can be modified with the same operations available to edit param fields.
The searchbar utilise Regex, and words surrounded by ! in commands indicate that a Regex expression may be used instead of plain text. All other words in capitals are parameters for the given command. Regex searches are case-insensitive and the searched term may appear anywhere in the target rows. To specify an exact match, surround the text with ^ and $ (eg. ^10$) or use a range variant. Multiple selectors can be given by separating them with &&.
Row selection is done through any of the following:
!VALUE!: to select rows with a matching ID or a matching name modified: to select rows changed from vanilla !modified: to select unmodified rows id !VALUE!: to select rows with a matching ID idrange MIN MAX: to select rows with an ID within the given bounds name !NAME!: to select rows with a matching name prop FIELD !VALUE!: to select rows who have a matching value for the given field proprange FIELD MIN MAX: to select rows who have a value for the given field within the given bounds propref FIELD !NAME!: to select rows that have a reference to another row with a matching name.
This searches for all rows with an id containing 10000. This includes 10000, 1000010, 210000
id 10000
This searches for all rows with a name containing Dagger. This includes Blood Dagger, Sharp daggers and daggerfall
name Dagger
This searches for all rows whose field originEquipWep0 refers to a row with a name containing Dagger, following the same rules above.
propref originEquipWep0 Dagger
This searches for all rows with a name containing Dagger and that have an id greater than 9999
name Dagger && idrange 10000 Infinity
This selects from the current selection, the field throwAtkRate and makes its value 30
selection: throwAtkRate: = 30;
This selects from EquipParamWeapon all rows beginning with Dagger, and multiplies the values in throwAtkRate by 2
param EquipParamWeapon: name Dagger.*: throwAtkRate: * 2;
This selects from EquipParamWeapon all rows whose weaponCategory is 0, and adds the row's correctStrength to its correctAgility
param EquipParamWeapon: prop weaponCategory 0: correctAgility: + field correctStrength;
This selects from EquipParamWeapon ALL rows, and replaces all cases of Dark in their name with Holy
param EquipParamWeapon: id .*: name: replace Dark:Holy;
This selects from EquipParamWeapon all rows beginning with Dagger and with an id higher than 9999, and multiplies the values in throwAtkRate by 2
param EquipParamWeapon: name Dagger.* && idrange 10000 Infinity: throwAtkRate: * 2;