Recipes

Change many values by a rule, such as every Elite's health up ten percent, preview the result with its figures, and save the steps as a file to run again next balance pass.

Documentation pages

A recipe is a list of steps, such as “add 10 to health” or “multiply speed by 0.9”, run over the assets you choose. It stages its changes like any edit, so you see every value it would write before anything is written, and you can save it as a small text file to run again on the next balance pass.

Build a recipe

Open the Edit tab. Under Recipe, choose an Operation and a Field, fill in the boxes the operation asks for (an Amount to add, a Minimum and Maximum to keep between), and click Add step. Set to on a choice column offers its choices. Each step becomes a line in Steps, and you can add as many as you need.

The Recipe group: Multiply by, Reward, an amount of 1.15 rounded half-away, Add step, and the steps so far.The Recipe group: Multiply by, Reward, an amount of 1.15 rounded half-away, Add step, and the steps so far.
Operation What it does Works on
Set to Sets the value Any field
Clear Empties it: 0, blank text, no reference Any field
Add, Subtract Adds or subtracts a number Numbers
Multiply by, Divide by Multiplies or divides Numbers
Keep between Raises anything under the first number and lowers anything over the second Numbers
Round Rounds to a number of decimal places Decimals
Put text before, Put text after Adds text at the start or the end Text
Replace text Replaces every match of some text Text
Replace (pattern) Replaces every match of a regular expression Text
Copy from field Copies another column’s value into this one A field that can hold the value

Steps run in order, each on the result of the one before.

Choose what it runs on

A recipe runs on the rows you have selected, or, with none selected, on every row the filter shows. The button says which: Preview recipe on 3 assets.

To run a recipe on every Elite enemy, filter the table to kind = Elite and leave nothing selected. See The table.

Preview it

Click Preview recipe. The recipe’s changes are staged in the table, each cell showing its old value and its new one (a change too wide for its column shows the new value, with the whole change on hover), and the panel sums up each number column it changed: Min, Average (with how far it moved) and Max after the recipe, and the largest single move.

The recipe's changes staged in the table, each cell showing old and new, and the Edit panel's Min, Average and Max for Health and Reward.The recipe's changes staged in the table, each cell showing old and new, and the Edit panel's Min, Average and Max for Health and Reward.

Nothing is written yet. Change a step and preview again, and the new preview replaces the old one. When it looks right, press Apply. The whole recipe is one Apply, and one Edit › Undo takes it back.

A recipe works from the saved values, so it will not stage over a cell you have already edited by hand. It names the cell and asks you to apply or discard that edit first.

If any step cannot run on any asset, such as a number that would not fit its field, the preview stages nothing and lists each problem with its asset.

Whole numbers and rounding

Arithmetic on a whole-number field must end in a whole number. Multiplying a health of 45 by 1.15 gives 51.75, so Athena Asset Tables asks how to round it, and the Round choice beside the step says:

Round 51.75 becomes -51.75 becomes
half-away (the usual rounding) 52 -52
half-even (banker’s rounding) 52 -52
floor (always down) 51 -52
ceiling (always up) 52 -51
toward-zero (drop the fraction) 51 -51

half-away and half-even differ only at an exact half: 2.5 becomes 3 and 2 respectively.

A result too large for its field, such as 300 in a byte, is refused rather than wrapped around.

Recipes as text

Steps is the recipe itself, one step per line, and you can type it directly:

# Elite pass: tougher, richer, a little slower
add health 10
add reward 5
multiply speed 0.9
multiply reward 1.15 round half-away
clamp health 1 999
suffix displayName " (Elite)"
Step Written as
Set to set <field> <value>
Clear clear <field>
Add, Subtract, Multiply by, Divide by add <field> <number>, with round <mode> after it on a whole-number field
Keep between clamp <field> <lowest> <highest>
Round round <field> <decimals> <mode>
Put text before, after prefix <field> "<text>", suffix <field> "<text>"
Replace text replace <field> "<find>" "<replacement>"
Replace (pattern) regex <field> "<pattern>" "<replacement>"; $1 puts back the first group
Copy from field copy <field> from <other field>

A field is named as the script spells it (displayName, not Display Name). Quote text with spaces in it. A line starting with # is a comment. A mistake is shown under the box as you type, with the line and a suggested fix where one is near, such as rewrd isn't a column. Did you mean reward?

Save and share a recipe

Type a path in Recipe file, such as Assets/Balance/elite-pass.datarecipe.txt, and click Save recipe. Load recipe reads one back into Steps. A recipe file is plain text, so it diffs cleanly in version control, and anyone on the team can run it.

A saved recipe and a saved view can also run without the window, from a build server or your own editor tools: see Automation.

Find and replace

Find and replace, under the recipe on the Edit tab, is a quicker tool for one change of text:

  1. Type the text in Find and its replacement in Replace with.
  2. Choose the column under In: any text column, or Asset name to rename assets.
  3. Tick Regular expression to find a pattern, Match case to tell Orc from orc, and Only selected assets to search only the selected rows.
  4. Click Replace in all assets (or Replace in selected assets).

Every replacement is staged for you to check, and Apply writes them. A search that matches nothing says so and stages nothing.