wesnoth/data/schema/game_config.cfg

529 lines
12 KiB
INI

{./macros.cfg}
#define INSERT_TAG
[tag]
name="insert_tag"
max=infinite
{SIMPLE_KEY name string}
{SIMPLE_KEY variable string}
[/tag]
#enddef
[wml_schema]
# TODO: Or should we just include {./types}?
{./types/basic.cfg}
{./types/lists.cfg}
{./types/formula.cfg}
{./types/subst.cfg}
{./types/pango.cfg}
[type]
name=int_percent
value="-?\d+%?"
[/type]
[type]
name="version"
value="\d+(\.\d+(\.\d+)?)"
[/type]
[type]
name="text_alignment"
value="right|left|center"
[/type]
[type]
name="ability_context"
value="offense|defense|both"
[/type]
[type]
name="ability_apply"
value="self|opponent|attacker|defender|both"
[/type]
[type]
name="ability_overwrite"
value="none|one_side|both_sides"
[/type]
[type]
name="bool_or_empty"
[list]
[element]
value="true|false|yes|no|none"
[/element]
[/list]
[/type]
[type]
name="addon_type"
value="sp|mp|hybrid"
[/type]
[type]
name="gender"
value="male|female"
[/type]
[type]
name="upkeep"
value="loyal|free|full|\d+"
[/type]
[type]
name="controller"
# TODO: Is "computer" a valid value?
value="ai|computer|human|null|\d+"
[/type]
[type]
name="share_vision"
value="all|shroud|none"
[/type]
[type]
name="defeat_condition"
value="no_leader_left|no_units_left|never|always"
[/type]
[type]
name="root_base"
[union]
[type]
link=unsigned
[/type]
[type]
value="square|cube"
[/type]
[/union]
[/type]
# definition of unsigned_range_list and s_unsigned_range_list, before macros are expanded
{LIST_TYPE_COMPLEX unsigned_range (
[element]
value="\d+"
[/element]
[element]
value="\d+-\d+"
[/element]
[element]
value="\d+-infinity"
[/element]
)}
# definition of int_range_list and s_int_range_list, before macros are expanded
{LIST_TYPE_COMPLEX int_range (
[element]
value="(-?)\d+"
[/element]
[element]
value="-\d+-(-?)\d+"
[/element]
[element]
# If the first number is positive, the second one has to be too
value="\d+-\d+"
[/element]
[element]
value="-infinity-(-?)\d+"
[/element]
[element]
value="(-?)\d+-infinity"
[/element]
)}
# definition of real_range_list and s_real_range_list, before macros are expanded
{LIST_TYPE_COMPLEX real_range (
[element]
value="(-?)\d+(\.\d+)?"
[/element]
[element]
value="-\d+(\.\d+)?-(-?)\d+(\.\d+)?"
[/element]
[element]
# If the first number is positive, the second one has to be too
value="\d+(\.\d+)?-\d+(\.\d+)?"
[/element]
[element]
value="-infinity-(-?)\d+(\.\d+)?"
[/element]
[element]
value="(-)?\d+(\.\d+)?-infinity"
[/element]
)}
[type]
name=s_int_range_list_default
[union]
[type]
link=s_int_range_list
[/type]
[type]
value=default
[/type]
[/union]
[/type]
[type]
name=s_real_range_list_default
[union]
[type]
link=s_real_range_list
[/type]
[type]
value=default
[/type]
[/union]
[/type]
[type]
name=alignment
value="lawful|neutral|chaotic|liminal"
[/type]
[type]
name=mask_alignment
value="even|odd|raw"
[/type]
[type]
name=ai_usage
value="scout|fighter|archer|mixed fighter|healer|null"
[/type]
[type]
name=terrain_code
value="^[A-Za-z\\|/\*\^_]+$"
[/type]
[type]
name=terrain_list
# value="([A-Za-z\\|/\*\^_]+|!)(,([A-Za-z\\|/\*\^_]+|!))*"
[list]
[element]
link="terrain_code"
[/element]
[element]
value="!"
[/element]
[/list]
[/type]
[type]
name="map_data"
[list]
split="\s*\n\s*"
[element]
[list]
[element]
value="([a-zA-Z0-9_]+\s+)*[A-Za-z\\|/\^_]+"
[/element]
[/list]
[/element]
[/list]
[/type]
[type]
name=terrain_layer
value="overlay|base|both"
[/type]
[type]
name="shroud_data"
[list]
split="\n"
[element]
value="\|[01]*"
[/element]
[/list]
[/type]
[type]
name=irdya_date
value="\d+ [A-Z][A-Z]"
[/type]
[type]
name=prog_string
value=".*"
[/type]
[type]
name=prog_int
value=".*"
[/type]
[type]
name=prog_real
value=".*"
[/type]
[type]
name="dir"
value="-?([ns][ew]?)(:cc?w)?"
[/type]
{LIST_TYPE dir}
[type]
name="dir_count"
value="-?([ns][ew]?)(:cc?w)?(:\d+)?"
[/type]
{LIST_TYPE dir_count}
[type]
name="anim_hits"
[union]
[type]
link=bool
[/type]
[type]
value="hit|miss|kill"
[/type]
[/union]
[/type]
{LIST_TYPE anim_hits}
[type]
name="color"
value="\d+,\d+,\d+"
[/type]
[type]
name="hex"
value="[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]"
[/type]
[type]
name="hex_list"
[list]
split=","
[element]
link="hex"
[/element]
[/list]
[/type]
[type]
name="server_address"
value="[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)+:\d+"
[/type]
[type]
name="effect_times"
[union]
[type]
link=int
[/type]
[type]
value="per level"
[/type]
[/union]
[/type]
[type]
name="effect_set_special_mode"
value="append|replace"
[/type]
[type]
name="set_variables_mode"
value="append|replace|merge|insert"
[/type]
[type]
name="store_unit_mode"
value="append|replace|always_clear"
[/type]
[type]
name="ai_grouping"
value="offensive|defensive|no"
[/type]
[type]
name="ai_engine"
value="cpp|lua|fai"
[/type]
[type]
name="ai_ca_formula_type"
value="movement|attack"
[/type]
[type]
name="ai_modify_action"
value="add|change|(try_)?delete"
[/type]
[type]
name="ai_modify_path"
[union]
# Toplevel components
[type]
value="(aspect|goal|stage)\[[^\]]*\]"
[/type]
# Facets
[type]
value="aspect\[[^\]]*\](\.facet\[[^\]]*\])+"
[/type]
# Recruitment jobs
[type]
value="aspect\[\s*recruitment_instructions\s*]*\](\.facet\[[^\]]*\])+\.(recruit|limit)\[[^\]]*\]"
[/type]
# Candidate actions
[type]
value="stage\[[^\]]*\]\.candidate_action\[[^\]]*\]"
[/type]
[/union]
[/type]
[type]
name="endlevel_result"
value="victory|defeat"
[/type]
[type]
name="object_duration"
value="scenario|forever|turn|turn[ _]end"
[/type]
[type]
name="heal_amount"
[union]
[type]
link=s_int
[/type]
[type]
value="full"
[/type]
[/union]
[/type]
[type]
name="image_pos"
value="left|right"
[/type]
[type]
name="objective_condition"
value="win|lose"
[/type]
[type]
name="deprecation_level"
value="[1-4]"
[/type]
[type]
name="logger"
value="err(or)?|warn(ing)?|debug|log|info"
[/type]
[type]
name="stamp"
value="stamp"
[/type]
[type]
name="rounding_method"
[union]
[type]
link=int
[/type]
[type]
value="floor|ceil|trunc"
[/type]
[/union]
[/type]
[type]
name="reachable_range"
value="movement|attack|vision"
[/type]
[type]
name="reachable_moves"
value="current|max"
[/type]
[type]
name="find_path_nearest_by"
value="movement_cost|hexes|steps"
[/type]
[type]
name="search_recall_list"
[union]
[type]
link=bool
[/type]
[type]
value="only"
[/type]
[/union]
[/type]
[type]
name="micro_ai_action"
value="add|delete|change"
[/type]
[type]
name="coordinate"
[union]
[type]
link=int
[/type]
[type]
value="recall"
[/type]
[/union]
[/type]
[type]
name="coordinates"
[union]
[type]
link=unsigned_range_list
[/type]
[type]
value="recall"
[/type]
[/union]
[/type]
[type]
name="map_transform"
[list]
[element]
value="flip_(x|y|xy)"
[/element]
[/list]
[/type]
[type]
name="unlimited"
value="-1|unlimited"
[/type]
{SUBST_TYPE coordinate}
{SUBST_TYPE coordinates}
{SUBST_TYPE unsigned_range_list}
{SUBST_TYPE int_range_list}
{SUBST_TYPE real_range_list}
{SUBST_TYPE terrain_code}
{SUBST_TYPE terrain_list}
{SUBST_TYPE dir}
{SUBST_TYPE dir_list}
{SUBST_TYPE int_percent}
{SUBST_TYPE anim_hits}
{SUBST_TYPE f_int}
{SUBST_TYPE alignment}
{SUBST_TYPE bool_or_empty}
[type]
name="global"
value="global"
[/type]
[type]
name="only"
value="only"
[/type]
[type]
name="topic_sort"
[union]
[type]
link=bool
[/type]
[type]
value="generated"
[/type]
[/union]
[/type]
[type]
name="resolution"
[list]
split="x"
min=2
max=2
[element]
link=int
[/element]
[/list]
[/type]
[type]
name="theme_rect"
[list]
min=4
max=4
[element]
link=int
[/element]
[element]
value="="
[/element]
[element]
value="=?[-+]\d+"
[/element]
[/list]
[/type]
[type]
name="theme_anchor"
value="top|left|bottom|right|fixed|proportional"
[/type]
[type]
name="theme_action"
value="checkbox|radiobox|image|turbo"
[/type]
[tag]
name="root"
min=1
{./filters}
{./core}
{./ai}
{./units}
{./terrain}
{./editor}
[tag]
name="lua"
max=infinite
{SIMPLE_KEY name string}
{SIMPLE_KEY code string}
{DATA_TAG args 0 1 any}
[/tag]
[/tag]
[/wml_schema]