The Set Variable action allows you to compute a mathematical equation and store the result in a variable. The supported math syntax and functions are documented below.

# #Operators

Story Machine supports most common math operators: + - / * ( )
It also supports a few more technical operators:

• % - modulus, the remainder
• ^ - power

Example:

3 + (5 * 2^4) - (27 / 10)

# #Math functions and constants

Story Machine supports the following math functions. These are in the form of name(value).

• abs - absolute value
• acos - arccosine
• asin - arcsine
• atan - arctangent
• atan2(y,x) - computes the angle between the x axis and a line from the origin passing through (x, y)
• ceil - round up to the nearest whole number
• cos - cosine
• cosh - hyperbolic cosine
• exp - exponential value (e ^ x)
• fac - factorial
• floor - round down to the nearest whole number
• ln - natural log
• log - base 10 log
• ncr - combination (n, r)
• npr - permutation (n, r)
• pow - power (x ^ y)
• sign - sign, 1 or -1
• sin - sine
• sinh - hyperbolic sine
• sqrt - square root
• tan - tangent
• tanh - hyperbolic tangent

Story Machine also provides the following math constants, which can be used in equations.

• e - Euler’s number
• pi - Pi
• deg2rad - multiply with an angle in degrees to get radians
• rad2deg - multiply with an angle in radians to get degrees
• random - a random number between 0 and 1

# #Logical functions

• approach(value, target, change) - moves value towards target at rate change. Will not surpass target.
• clamp(value, min, max) - clamps value to the min…max range
• loop(value, min, max) - loops the value along the min…max range (e.g. loop(1.2, 0, 1) = 0.2.
• min(a, b) - returns a or b, whichever is smaller
• max(a, b) - returns a or b, whichever is larger

# #Variables

You can use variables in place of any value in Story Machine. Variables may have spaces in their names, and are not case-sensitive. Note however that variable names must be unique, and spaces/case are not differentiating. Therefore “my Value X” is the same variable name as “myvaluex”.