Game rules are enumerated global values, that can only be modified at game start.
In their simplest form (on/off), they are similar to boolean global flags, but can get more complex (fewer/default/more).
The benefit of game rules is that they have a nice dedicated UI to manage the options at the start of a game, so there's less modding needed than using decisions.
Definition
Rules are defined in folder common/game_rules/
.
The format is:
<rule_name> = {
name = LOCALIZATION_KEY_FOR_RULE_NAME
group = LOCALIZATION_KEY_FOR_RULE_GROUP
option = {
name = <option1_name>
text = LOCALIZATION_KEY_FOR_OPTION1_NAME
desc = LOCALIZATION_KEY_FOR_OPTION1_DESC
}
option = {
name = <option2_name>
achievements = no #Optional
text = LOCALIZATION_KEY_FOR_OPTION2_NAME
desc = LOCALIZATION_KEY_FOR_OPTION2_DESC
}
}
Notes:
- The first option is the default one at game start.
- If certain rule only makes sense to appear with a DLC, it can use
dlc = "The Reaper's Due"
.
- Each option can have
achievements = yes/no
. This doesn't make sense to be used for mods, as they already disable achievements by changing the checksum.
- The same is true for
alt_start_achievements = yes/no
, which determines whether the option disables achievements when using alternate starts (shattered/randomised world). Defaults to yes even if achievements = no
.
- You can create custom rule group, for example
group = "RULE_GROUP_MY_MOD"
.
- Parameter "achievements = no" adds to LOCALIZATION_KEY_FOR_OPTION_DESC a red text " This option turns off achievements." (localisation key "RULE_ACHIEVEMENTS_WARNINGS" in ReapersDue.csv).
- If you want a rule to have a different default value when using alternate starts, use
alt_start_default = <option_name>
.
Usage
Selected option of a rule can be compared from scripting via the condition has_game_rule = { name = <rule_name> value = <option_name> }
.
Some vanilla rules are not used from scripting and modify hardcoded behavior, similar to defines, which is not possible for mods.