Registers a shock to a parameter value. Associated with a value function, which shocks the variable, and a timer function, which determines when and how often to execute the value function.
name — str, required
A unique name for the shock, to be displayed in the GUI beside its checkbox.
param — str|tuple, required
A parameter identification string or tuple. A string value indicates a global parameter. Per-good parameters can be indicated with a three-item tuple,
('paramName', 'good', 'goodName'). A per-breed parameter can be indicated with a three- or four-item tuple,
('paramName', 'breed', 'breedName', 'primitive'), with the last element optional if there is only one primitive.
paramcan also be set to
None, in which case
valFuncbehaves somewhat differently. See below.
valFunc — func, required
A function that returns a new value for the parameter.
valFunctakes three arguments: the name of the variable being shocked, the parameter type (
Nonefor global parameters,
'good'for per-breed and per-good parameters, respectively), and (for per-breed or per-good parameters) the breed or the good in question. If
var is None, however,
valFunctakes one argument, the model object. This can be useful for more complex shocks that do not correspond to a particular parameter.
timerFunc — func(int)|str, required
A function that takes the current model time and returns a
bool, indicating whether to run
valFuncthat period or not.
timerFunccan also be set to the string
'button', in which case a button will be drawn in the control panel that runs
valFuncwhen the button is pressed.
active — bool, optional
Whether the shock is active by default when the control panel launches. This can be toggled on and off in the control panel later.
Default value: True
desc — str, optional
A long description that will display as a tooltip if PMW is installed.
Default value: None