ModificationWML
From The Battle for Wesnoth Wiki
The [modification] toplevel tag
This tag describes an SP or MP modification. A modification is, practically speaking, a bunch of events which get included into the scenario if the modification is enabled.
The following keys/tags are recognized for [modification]:
- id: identifier for the modification. Must be unique.
- name: the name of the modification, as displayed to the user.
- type: where the modification will be available for playing. Possible values are sp, mp, and hybrid.
- description: a brief description for the modification.
- define=MODIFICATION_SYMBOL when this addon is active, the preprocessor symbol MODIFICATION_SYMBOL will be defined. See #ifdef in PreprocessorRef for how this can be used to isolate parts of the modification file from other modifications or campaigns. Only the tags [modification], [textdomain] and [binary_path] (see BinaryPathWML) should go outside of #ifdef MODIFICATION_SYMBOL. This symbol will be defined before any .cfg is preprocessed. Important note: starting with 1.7.13, [binary_path] does no longer need to be outside of the #ifdef MODIFICATION_SYMBOL block to make custom binary data available, which could easily cause overwrites. E.g. icon=data/add-ons/whatever/something.png is supposed to work. This seems to have been a bug since at least BfW 1.0 which means that practically all available examples of user made add-ons are wrong in this aspect.
- allow_scenario: a list of scenario ids. Only the scenarios with matching ids will be allowed to be played with this modification.
- disallow_scenario: a list of scenario ids. Only the scenarios with matching ids will not be allowed to be played with this modification. Cannot be used in parallel with allow_scenario.
- allow_era: same as allow_scenario, but for eras.
- disallow_era: same as disallow_scenario, but for eras. Can't be used with allow_era.
- allow_modification: same as allow_scenario, but for modifications.
- disallow_modification: same as disallow_scenario, but for modifications. Can't be used with allow_modification.
- ignore_incompatible_scenario: a list of scenario ids. The scenarios with matching ids will be considered compatible with this modification regardless their dependencies.
- ignore_incompatible_era: same as ignore_incompatible_scenario, but for eras.
- ignore_incompatible_modification: same as ignore_incompatible_scenario, but for modifications.
- require_modification: a boolean value; if set to yes, all players have to have this modification installed to join the game. Default no.
- addon_min_version: (Version 1.13.0 and later only) the minimum version of your add-on with which this content is backwards compatible. Compare with the version string given in PblWML. Clients in multiplayer must have add-on versions agreeing with the addon_min_versions of eachothers content in order to play, and will be prompted to update otherwise.
- [event]: any [event] children written inside the [modification] tag will get included into scenarios that are played with this modification enabled. See EventWML.
- [lua]: any [lua] children written inside the [modification] tag will get included into scenarios that are played with this modification enabled.
- [options]: custom options. See OptionWML for details.
- [ai]: See AiWML for details.
- [modify_unit_type] (Version 1.15.2 and later only): Changes a unit type while this modification is active. This tag is also supported in [campaign] and [era]. The supported attributes are:
- type : the id of the unit type to change.
- set_experience : changes the unit type's max experience.
- set_cost : changes the unit type's recruit cost.
- set_advances_to : changes the unit type's advancements.
- add_advancement : adds a (list of comma separated) unit type(s) to the possible advancements of this unit type.
- remove_advancement : removes a (list of comma separated) unit type(s) from the possible advancements of this unit type.
The [resource] toplevel tag
(Version 1.13.2 and later only)
The [resource] toplevel tag is similar to [modification] in that it contains [event] and [lua] tags which are then copied into the scenario. However, unlike [modification], resources defined this way are completely hidden from the user. To load a resource, use [load_resource] id=<resource id> in [scenario], [multiplayer], [era], [campaign], [modification], or [resource].