Schema ActionWML: Small bugfixes and add undocumented stuff from perusing source code

This commit is contained in:
Celtic Minstrel 2018-03-30 18:36:03 -04:00
parent 1e33a66661
commit 24608d0632
8 changed files with 257 additions and 113 deletions

View file

@ -57,14 +57,14 @@
name="if"
max=infinite
super="$conditional_wml"
{ACTION_TAG "then" ()}
{ACTION_TAG "then" max=infinite}
[tag]
name="elseif"
max=infinite
super="$conditional_wml"
{ACTION_TAG "then" ()}
{ACTION_TAG "then" max=infinite}
[/tag]
{ACTION_TAG "else" ()}
{ACTION_TAG "else" max=infinite}
[/tag]
[tag]
name="switch"
@ -77,13 +77,13 @@
super="$action_wml"
{REQUIRED_KEY value string}
[/tag]
{ACTION_TAG "else" ()}
{ACTION_TAG "else" max=infinite}
[/tag]
[tag]
name="while"
max=infinite
super="$conditional_wml"
{ACTION_TAG "do" max=infinite}
{ACTION_TAG "do" min,max=0,infinite}
[tag]
name="do"
max=infinite
@ -107,7 +107,7 @@
{SIMPLE_KEY step s_int}
[/else]
[/if]
{ACTION_TAG "do" max=infinite}
{ACTION_TAG "do" min,max=0,infinite}
[/tag]
[tag]
name="foreach"
@ -117,14 +117,14 @@
{SIMPLE_KEY variable string}
{SIMPLE_KEY index_var string}
{DEFAULT_KEY readonly s_bool no}
{ACTION_TAG "do" max=infinite}
{ACTION_TAG "do" min,max=0,infinite}
[/tag]
[tag]
name="repeat"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY times s_int}
{ACTION_TAG "do" max=infinite}
{ACTION_TAG "do" min,max=0,infinite}
[/tag]
# Direct actions (DirectActionsWML)
[tag]
@ -136,7 +136,7 @@
[if]
result=victory
[then]
{DEFAULT_KEY bonus s_bool yes}
{DEFAULT_KEY bonus s_bool,s_unsigned yes}
{DEFAULT_KEY carryover_report s_bool yes}
{DEFAULT_KEY save s_bool yes}
{DEFAULT_KEY replay_save s_bool yes}
@ -147,15 +147,15 @@
{DEFAULT_KEY carryover_add s_bool no}
{SIMPLE_KEY music string_list}
{DEFAULT_KEY end_credits s_bool yes}
{SIMPLE_KEY end_text s_t_string}
{SIMPLE_KEY end_text t_string}
{SIMPLE_KEY end_text_duration s_unsigned}
[tag]
name="result"
max=infinite
{INSERT_TAG}
{REQUIRED_KEY result endlevel_result}
{SIMPLE_KEY side s_unsigned}
{DEFAULT_KEY bonus s_bool yes}
{REQUIRED_KEY side s_unsigned}
{DEFAULT_KEY bonus s_bool,s_unsigned yes}
{SIMPLE_KEY carryover_percentage int}
{DEFAULT_KEY carryover_add s_bool no}
[/tag]
@ -165,7 +165,7 @@
[tag]
name="unit"
max=infinite
super="units/$single"
super="units/$unit"
{INSERT_TAG}
[/tag]
[tag]
@ -173,16 +173,17 @@
max=infinite
super="$filter_unit,$action_wml/role/auto_recall"
{INSERT_TAG}
{FILTER_TAG "secondary_unit" unit {INSERT_TAG}}
[/tag]
[tag]
name="teleport"
max=infinite
{INSERT_TAG}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "filter" unit {INSERT_TAG}}
{SIMPLE_KEY x s_int}
{SIMPLE_KEY y s_int}
{SIMPLE_KEY clear_shroud s_bool}
{SIMPLE_KEY animate s_bool}
{DEFAULT_KEY clear_shroud s_bool yes}
{DEFAULT_KEY animate s_bool no}
{DEFAULT_KEY check_passability s_bool yes}
[/tag]
[tag]
@ -192,6 +193,7 @@
{SIMPLE_KEY x s_int}
{SIMPLE_KEY y s_int}
{SIMPLE_KEY mask map_data}
{SIMPLE_KEY mask_file string}
{DEFAULT_KEY border s_bool no}
[tag]
name="rule"
@ -256,11 +258,12 @@
name="modify_side"
max=infinite
{INSERT_TAG}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
{SIMPLE_KEY side s_int}
{SIMPLE_KEY income s_int}
{SIMPLE_KEY recruit string_list}
{SIMPLE_KEY team_name string}
{SIMPLE_KEY side_name string}
{SIMPLE_KEY user_team_name t_string}
{SIMPLE_KEY gold s_int}
{SIMPLE_KEY village_gold s_int}
@ -272,6 +275,7 @@
{SIMPLE_KEY switch_ai string}
{SIMPLE_KEY reset_maps s_bool}
{SIMPLE_KEY reset_view s_bool}
{SIMPLE_KEY share_vision share_vision}
{DEPRECATED_KEY share_maps s_bool}
{DEPRECATED_KEY share_view s_bool}
{SIMPLE_KEY shroud_data shroud_data}
@ -303,7 +307,7 @@
{INSERT_TAG}
{SIMPLE_KEY side s_unsigned}
{DEFAULT_KEY fire_event s_bool no}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
[/tag]
[tag]
name="kill"
@ -312,9 +316,9 @@
{INSERT_TAG}
{SIMPLE_KEY animate s_bool}
{SIMPLE_KEY fire_event s_bool}
{FILTER_TAG "secondary_unit" unit ()}
{FILTER_TAG "primary_attack" weapon ()}
{FILTER_TAG "secondary_attack" weapon ()}
{FILTER_TAG "secondary_unit" unit {INSERT_TAG}}
{FILTER_TAG "primary_attack" weapon {INSERT_TAG}}
{FILTER_TAG "secondary_attack" weapon {INSERT_TAG}}
[/tag]
[tag]
name="move_unit"
@ -323,6 +327,7 @@
{INSERT_TAG}
{SIMPLE_KEY to_x s_int}
{SIMPLE_KEY to_y s_int}
{SIMPLE_KEY to_location string}
{DEFAULT_KEY fire_event s_bool no}
{DEFAULT_KEY check_passability s_bool yes}
{SIMPLE_KEY force_scroll s_bool}
@ -337,7 +342,8 @@
max=infinite
super="units/$unit"
{INSERT_TAG}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "filter" unit {INSERT_TAG}}
{SIMPLE_KEY mode string} # TODO: This is undocumented and it's unclear what's allowed here; probably should be an enum though?
[link]
name="units/$modifications/trait"
[/link]
@ -375,7 +381,7 @@
{SIMPLE_KEY name t_string}
{SIMPLE_KEY description t_string}
{SIMPLE_KEY cannot_use_message t_string}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "filter" unit {INSERT_TAG}}
{ACTION_TAG "then" ()}
{ACTION_TAG "else" ()}
[/tag]
@ -392,14 +398,14 @@
super="$filter_location"
{INSERT_TAG}
{SIMPLE_KEY side s_unsigned}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
[/tag]
[tag]
name="lift_fog"
max=infinite
super="$filter_location"
{INSERT_TAG}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
{DEFAULT_KEY multiturn s_bool no}
[/tag]
[tag]
@ -407,7 +413,7 @@
max=infinite
super="$filter_location"
{INSERT_TAG}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
{DEFAULT_KEY reset_view s_bool no}
[/tag]
{EMPTY_TAG "allow_undo,cancel_action" 0 infinite}
@ -419,9 +425,9 @@
name="heal_unit"
max=infinite
{INSERT_TAG}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "filter_second" unit ()}
{SIMPLE_KEY amonut heal_amount}
{FILTER_TAG "filter" unit {INSERT_TAG}}
{FILTER_TAG "filter_second" unit {INSERT_TAG}}
{SIMPLE_KEY amount heal_amount}
{DEFAULT_KEY animate s_bool no}
{DEFAULT_KEY moves heal_amount 0}
{DEFAULT_KEY restore_attacks s_bool no}
@ -431,24 +437,27 @@
name="harm_unit"
max=infinite
{INSERT_TAG}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "filter_second" unit ()}
{FILTER_TAG "filter" unit (
min=1
{INSERT_TAG}
)}
{FILTER_TAG "filter_second" unit {INSERT_TAG}}
{REQUIRED_KEY amount s_int}
{SIMPLE_KEY alignment alignment}
{SIMPLE_KEY damage_type string}
{DEFAULT_KEY kill s_bool yes}
{DEFAULT_KEY fire_event s_bool no}
{DEFAULT_KEY animate s_bool no}
{SIMPLE_KEY delay s_unsigned}
{DEFAULT_KEY delay s_unsigned 500}
{SIMPLE_KEY variable string}
{DEFAULT_KEY poisoned s_bool no}
{DEFAULT_KEY slowed s_bool no}
{DEFAULT_KEY petrified s_bool no}
{DEFAULT_KEY unhealable s_bool no}
{SIMPLE_KEY experience s_bool}
{SIMPLE_KEY resistance_modifier s_real}
{FILTER_TAG "primary_attack" weapon ()}
{FILTER_TAG "secondary_attack" weapon ()}
{DEFAULT_KEY experience s_bool no}
{DEFAULT_KEY resistance_modifier s_real 1}
{FILTER_TAG "primary_attack" weapon {INSERT_TAG}}
{FILTER_TAG "secondary_attack" weapon {INSERT_TAG}}
[/tag]
[tag]
name="time_area"
@ -463,14 +472,15 @@
name="remove_time_area"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY id string}
{REQUIRED_KEY id string}
[/tag]
{EMPTY_TAG "end_turn" 0 infinite}
[tag]
name="replace_map"
max=infinite
{INSERT_TAG}
{REQUIRED_KEY map map_data}
{SIMPLE_KEY map map_data}
{SIMPLE_KEY map_file string}
{DEFAULT_KEY expand s_bool no}
{DEFAULT_KEY shrink s_bool no}
[/tag]
@ -567,6 +577,11 @@
deprecated=yes
{SIMPLE_KEY code string}
[/tag]
[tag]
name="custom_command"
{SIMPLE_KEY name string}
{DATA_TAG "data" 1 1}
[/tag]
[/tag]
[tag]
name="put_to_recall_list"
@ -600,8 +615,9 @@
{SIMPLE_KEY caption t_string}
{DEFAULT_KEY scroll s_bool yes}
{DEFAULT_KEY highlight s_bool yes}
{SIMPLE_KEY duration s_unsigned}
{SIMPLE_KEY sound string_list}
{SIMPLE_KEY voice string_list}
{SIMPLE_KEY variable string}
{FORMATTING_KEYS}
{SHOW_IF_TAG}
[tag]
@ -613,8 +629,9 @@
{SIMPLE_KEY label t_string}
{SIMPLE_KEY description t_string}
{SIMPLE_KEY default s_bool}
{SIMPLE_KEY value string}
{SHOW_IF_TAG}
{ACTION_TAG "command" ()}
{ACTION_TAG "command" max=infinite}
[/tag]
[tag]
name="text_input"
@ -679,7 +696,7 @@
{DEFAULT_KEY synced s_bool yes}
{DEFAULT_KEY use_hotkey s_bool yes}
{SHOW_IF_TAG}
{FILTER_TAG "filter_location" location ()}
{FILTER_TAG "filter_location" location {INSERT_TAG}}
{ACTION_TAG "command" {DEFAULT_KEY delayed_variable_substitution s_bool yes}}
[tag]
name="default_hotkey"
@ -707,6 +724,8 @@
super="scenario/item,$filter_location"
{INSERT_TAG}
{DEFAULT_KEY redraw s_bool yes}
{SIMPLE_KEY write_name string}
{SIMPLE_KEY name string}
[/tag]
[tag]
name="remove_item"
@ -724,8 +743,8 @@
{COLOR_KEYS s_unsigned}
[/tag]
[tag]
name="move_unit_fake"
max=infinite
name="$fake_unit"
max=0
{SIMPLE_KEY type string}
{SIMPLE_KEY x range_list}
{SIMPLE_KEY y range_list}
@ -733,20 +752,21 @@
{SIMPLE_KEY gender gender}
{SIMPLE_KEY variation string}
{SIMPLE_KEY image_mods string}
[/tag]
[tag]
name="move_unit_fake"
max=infinite
super="$action_wml/$fake_unit"
{DEFAULT_KEY force_scroll s_bool yes}
[/tag]
[tag]
name="move_units_fake"
max=infinite
{INSERT_TAG}
# TODO: Does it accept force_scroll?
{DEFAULT_KEY force_scroll s_bool no}
[tag]
name="fake_unit"
# TODO: Does it accept gender, variation, or image_mods?
{SIMPLE_KEY type string}
{SIMPLE_KEY x s_unsigned}
{SIMPLE_KEY y s_unsigned}
{SIMPLE_KEY side s_unsigned}
super="$action_wml/$fake_unit"
{SIMPLE_KEY skip_steps s_unsigned}
[/tag]
[/tag]
@ -762,7 +782,7 @@
{SIMPLE_KEY x s_int}
{SIMPLE_KEY y s_int}
{SIMPLE_KEY side s_unsigned}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
[/tag]
[tag]
name="scroll_to"
@ -773,7 +793,7 @@
{DEFAULT_KEY immediate s_bool no}
{DEFAULT_KEY highlight s_bool no}
{SIMPLE_KEY side s_unsigned}
{FILTER_TAG "filter_side" side ()}
{FILTER_TAG "filter_side" side {INSERT_TAG}}
[/tag]
[tag]
name="scroll_to_unit"
@ -784,7 +804,7 @@
{DEFAULT_KEY immediate s_bool no}
{DEFAULT_KEY highlight s_bool no}
{SIMPLE_KEY for_side s_unsigned}
{FILTER_TAG "for_side" side ()}
{FILTER_TAG "for_side" side {INSERT_TAG}}
[/tag]
[tag]
name="select_unit"
@ -797,7 +817,7 @@
[tag]
name="sound"
max=infinite
{SIMPLE_KEY name string_list}
{REQUIRED_KEY name string_list}
{DEFAULT_KEY repeat s_unsigned 0}
[/tag]
[tag]
@ -837,7 +857,7 @@
[tag]
name="delay"
max=infinite
{SIMPLE_KEY time s_unsigned}
{REQUIRED_KEY time s_unsigned}
{DEFAULT_KEY accelerate s_bool no}
[/tag]
[tag]
@ -849,16 +869,16 @@
{SIMPLE_KEY side s_unsigned}
[/tag]
[tag]
name="unit_overlay"
name="unit_overlay,remove_unit_overlay"
max=infinite
super="$filter_unit"
{INSERT_TAG}
{SIMPLE_KEY image string}
{REQUIRED_KEY image string}
[/tag]
[tag]
name="animate_unit"
max=infinite
{SIMPLE_KEY flag string}
{REQUIRED_KEY flag string}
{SIMPLE_KEY hits anim_hits}
{SIMPLE_KEY text t_string}
{SIMPLE_KEY male_text t_string}
@ -887,7 +907,8 @@
max=infinite
super="$filter_location"
{INSERT_TAG}
{SIMPLE_KEY text t_string}
{REQUIRED_KEY text t_string}
{SIMPLE_KEY color s_color}
[/tag]
[tag]
name="deprecated_message"
@ -926,8 +947,8 @@
max=infinite
super="$filter_side"
{INSERT_TAG}
{SIMPLE_KEY speaker string}
{SIMPLE_KEY message string}
{DEFAULT_KEY speaker string "WML"}
{REQUIRED_KEY message string}
{DEFAULT_KEY observable s_bool yes}
[/tag]
[tag]
@ -941,25 +962,31 @@
name="set_variable"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY name string}
{REQUIRED_KEY name string}
{SIMPLE_KEY value string}
{SIMPLE_KEY literal string}
{SIMPLE_KEY to_variable string}
{SIMPLE_KEY suffix string}
{SIMPLE_KEY prefix string}
{SIMPLE_KEY add s_real}
{SIMPLE_KEY sub s_real}
{SIMPLE_KEY multiply s_real}
{SIMPLE_KEY divide s_real}
{SIMPLE_KEY modulo s_real}
{SIMPLE_KEY abs s_bool}
{SIMPLE_KEY root root_base}
{SIMPLE_KEY power s_real}
{SIMPLE_KEY rand string_list}
{SIMPLE_KEY time stamp}
{SIMPLE_KEY string_length string}
{SIMPLE_KEY round rounding_method}
{SIMPLE_KEY ipart s_real}
{SIMPLE_KEY fpart s_real}
{SIMPLE_KEY formula formula}
[tag]
name="join"
{SIMPLE_KEY variable string}
{SIMPLE_KEY key string}
{REQUIRED_KEY variable string}
{DEFAULT_KEY key string "value"}
{SIMPLE_KEY separator string}
{SIMPLE_KEY remove_empty s_bool}
[/tag]
@ -968,19 +995,26 @@
name="set_variables"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY name string}
{SIMPLE_KEY mode set_variables_mode}
{REQUIRED_KEY name string}
{SIMPLE_KEY to_variable string}
{DATA_TAG value 0 infinite}
{DATA_TAG literal 0 infinite}
[tag]
name="split"
max=infinite
{SIMPLE_KEY list string}
{SIMPLE_KEY key string}
{SIMPLE_KEY separator string}
{SIMPLE_KEY remove_empty s_bool}
[/tag]
[if]
[not]
glob_on_to_variable=*
[/not]
[then]
{SIMPLE_KEY mode set_variables_mode}
{DATA_TAG value 0 infinite}
{DATA_TAG literal 0 infinite}
[tag]
name="split"
max=infinite
{SIMPLE_KEY list string}
{DEFAULT_KEY key string "value"}
{SIMPLE_KEY separator char}
{SIMPLE_KEY remove_empty s_bool}
[/tag]
[/then]
[/if]
[/tag]
[tag]
name="store_gold"
@ -994,7 +1028,7 @@
max=infinite
super="$filter_side"
{INSERT_TAG}
{SIMPLE_KEY variable string}
{DEFAULT_KEY variable string "side"}
[/tag]
[tag]
name="store_starting_location"
@ -1008,14 +1042,17 @@
max=infinite
super="$filter_location"
{INSERT_TAG}
{SIMPLE_KEY variable string}
{DEFAULT_KEY variable string "location"}
[/tag]
[tag]
name="store_unit"
max=infinite
{INSERT_TAG}
{FILTER_TAG "filter" unit {INSERT_TAG}}
{SIMPLE_KEY variable string}
{FILTER_TAG "filter" unit (
min=1
{INSERT_TAG}
)}
{DEFAULT_KEY variable string "unit"}
{SIMPLE_KEY mode store_unit_mode}
{SIMPLE_KEY kill s_bool}
[/tag]
@ -1023,30 +1060,33 @@
name="store_reachable_locations"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY range reachable_range}
{SIMPLE_KEY moves reachable_moves}
{DEFAULT_KEY range reachable_range movement}
{DEFAULT_KEY moves reachable_moves current}
{SIMPLE_KEY viewing_side s_unsigned}
{SIMPLE_KEY variable string}
{FILTER_TAG "filter" unit {INSERT_TAG}}
{REQUIRED_KEY variable string}
{FILTER_TAG "filter" unit (
min=1
{INSERT_TAG}
)}
{FILTER_TAG "filter_location" location {INSERT_TAG}}
[/tag]
[tag]
name="store_map_dimensions"
max=infinite
{SIMPLE_KEY variable string}
{DEFAULT_KEY variable string "map_size"}
[/tag]
[tag]
name="store_time_of_day"
max=infinite
{SIMPLE_KEY x s_unsigned}
{SIMPLE_KEY y s_unsigned}
{SIMPLE_KEY variable string}
{DEFAULT_KEY variable string "time_of_day"}
{SIMPLE_KEY turn s_unsigned}
[/tag]
[tag]
name="store_turns"
max=infinite
{SIMPLE_KEY variable string}
{DEFAULT_KEY variable string turns}
[/tag]
[tag]
name="store_unit_defense"
@ -1060,7 +1100,7 @@
[tag]
name="store_unit_type"
max=infinite
{SIMPLE_KEY type string}
{REQUIRED_KEY type string}
{SIMPLE_KEY variable string}
[/tag]
[tag]
@ -1083,15 +1123,17 @@
name="store_relative_direction"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY variable string} # TODO: Is this a string or a direction?
{REQUIRED_KEY variable string}
{SIMPLE_KEY mode s_unsigned} # TODO: This should really be an enum type
[tag]
name="source"
min=1
{SIMPLE_KEY x s_unsigned}
{SIMPLE_KEY y s_unsigned}
[/tag]
[tag]
name="destination"
min=1
{SIMPLE_KEY x s_unsigned}
{SIMPLE_KEY y s_unsigned}
[/tag]
@ -1105,8 +1147,14 @@
{DEFAULT_KEY check_visibility s_bool no}
{DEFAULT_KEY check_teleport s_bool yes}
{DEFAULT_KEY check_zoc s_bool yes}
{FILTER_TAG "traveler" unit {INSERT_TAG}}
{FILTER_TAG "destination" location {INSERT_TAG}}
{FILTER_TAG "traveler" unit (
min=1
{INSERT_TAG}
)}
{FILTER_TAG "destination" location (
min=1
{INSERT_TAG}
)}
[/tag]
[tag]
name="unit_worth"
@ -1117,7 +1165,7 @@
[tag]
name="clear_variable"
max=infinite
{SIMPLE_KEY name string_list}
{REQUIRED_KEY name string_list}
[/tag]
[tag]
name="sync_variable"
@ -1148,24 +1196,26 @@
{SIMPLE_KEY role string}
{SIMPLE_KEY type string_list}
{DEFAULT_KEY search_recall_list search_recall_list yes}
{ACTION_TAG else ()}
{DEFAULT_KEY reassign s_bool yes}
{ACTION_TAG else max=infinite}
[tag]
name="auto_recall"
{DEFAULT_KEY show s_bool yes}
{DEFAULT_KEY fire_event s_bool no}
{DEFAULT_KEY check_passability s_bool yes}
{SIMPLE_KEY facing direction}
[/tag]
[/tag]
[tag]
name="random_placement"
max=infinite
{INSERT_TAG}
{SIMPLE_KEY num_items f_unsigned}
{SIMPLE_KEY variable string}
{SIMPLE_KEY min_distance s_unsigned}
{REQUIRED_KEY num_items f_unsigned}
{REQUIRED_KEY variable string}
{DEFAULT_KEY min_distance s_unsigned 0}
{DEFAULT_KEY allow_less s_bool no}
{FILTER_TAG "filter_location" location {INSERT_TAG}}
{ACTION_TAG "command" ()}
{ACTION_TAG "command" min=1}
[/tag]
{EMPTY_TAG "break,continue,return" 0 infinite}
# The MicroAI tag is in a league of its own...
@ -1238,7 +1288,7 @@
[/case]
[case]
value=swarm
{DEFAULT_KEY ca_score 300000}
{DEFAULT_KEY ca_score s_unsigned 300000}
{DEFAULT_KEY enemy_distance s_unsigned 5}
{DEFAULT_KEY scatter_distance s_unsigned 3}
{DEFAULT_KEY vision_distance s_unsigned 12}
@ -1257,10 +1307,10 @@
{REQUIRED_KEY enemy_y range_list}
{DEFAULT_KEY active_side_leader s_bool no}
{DEFAULT_KEY ca_score s_unsigned 300000}
{DEFAULT_KEY healer_x range_list}
{DEFAULT_KEY healer_y range_list}
{DEFAULT_KEY leadership_x range_list}
{DEFAULT_KEY leadership_y range_list}
{SIMPLE_KEY healer_x range_list}
{SIMPLE_KEY healer_y range_list}
{SIMPLE_KEY leadership_x range_list}
{SIMPLE_KEY leadership_y range_list}
[/case]
[case]
value=fast_ai
@ -1298,7 +1348,7 @@
{DEPRECATED_KEY id string}
{SIMPLE_KEY return_x s_unsigned}
{SIMPLE_KEY return_y s_unsigned}
{DEFAULT_KEY ca_score 100100}
{DEFAULT_KEY ca_score s_unsigned 100100}
[/case]
[case]
value=stationed_guardian
@ -1329,7 +1379,7 @@
{FILTER_TAG "filter" unit min=1}
{FILTER_TAG "filter_location" location min=1}
{DEPRECATED_KEY id string}
{DEFAULT_KEY ca_score 300000}
{DEFAULT_KEY ca_score s_unsigned 300000}
{SIMPLE_KEY station_x s_unsigned}
{SIMPLE_KEY station_y s_unsigned}
{FILTER_TAG "filter_location_enemy" location ()}
@ -1422,5 +1472,61 @@
[/case]
[/switch]
[/tag]
# Undocumented tags (or at least not linked from ActionWML wiki page)
[tag]
name="add_ai_behaviour"
max=infinite
deprecated=yes
{FILTER_TAG "filter" unit min=1}
{REQUIRED_KEY side s_unsigned}
{DEFAULT_KEY sticky s_bool no}
{DEFAULT_KEY loop_id string main_loop}
{SIMPLE_KEY evaluation string}
{SIMPLE_KEY execution string}
{SIMPLE_KEY bca_id string}
[/tag]
{ACTION_TAG "unsynced" max=infinite}
[tag]
name="clear_global_variable"
{REQUIRED_KEY global string}
{REQUIRED_KEY namespace string}
{SIMPLE_KEY side s_unsigned}
{DEFAULT_KEY immediate s_bool no}
[/tag]
[tag]
name="get_global_variable"
{REQUIRED_KEY from_global string}
{REQUIRED_KEY to_local string}
{REQUIRED_KEY namespace string}
{SIMPLE_KEY side s_unsigned}
[/tag]
[tag]
name="set_global_variable"
{REQUIRED_KEY to_global string}
{REQUIRED_KEY from_local string}
{REQUIRED_KEY namespace string}
{SIMPLE_KEY side s_unsigned}
{DEFAULT_KEY immediate s_bool no}
[/tag]
[tag]
name="store_rotate_map_location"
max=infinite
{INSERT_TAG}
{REQUIRED_KEY variable string}
{DEFAULT_KEY angle s_int 1}
{SIMPLE_KEY mode s_unsigned} # TODO: This should really be an enum type
[tag]
name="source"
min=1
{SIMPLE_KEY x s_unsigned}
{SIMPLE_KEY y s_unsigned}
[/tag]
[tag]
name="destination"
min=1
{SIMPLE_KEY x s_unsigned}
{SIMPLE_KEY y s_unsigned}
[/tag]
[/tag]
any_tag=yes
[/tag]

View file

@ -43,6 +43,10 @@
{INSERT_TAG}
{REQUIRED_KEY id string}
[/tag]
{EMPTY_TAG "proceed_to_next_scenario" 0 infinite}
[link]
name="lua"
[/link]
[tag]
name="and,or,not"
super="$condition_wml"

View file

@ -64,6 +64,17 @@
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]
[type]
name=range_list
# value="\d+(-\d+)?(,\d+(-\d+)?)*"
@ -167,6 +178,25 @@
[/element]
[/list]
[/type]
[type]
name="anim_hits"
[union]
[type]
link=bool
[/type]
[type]
value="hit|miss|kill"
[/type]
[/union]
[/type]
[type]
name="anim_hits_list"
[list]
[element]
link="anim_hits"
[/element]
[/list]
[/type]
[type]
name="anim_hits"
[list]

View file

@ -33,6 +33,11 @@
value="_?.*"
[/type]
[type]
name=char
value="."
[/type]
[type]
name=color
value="(?:2[0-5][0-5]|[01]?\d?\d)[.,]\s*(?:2[0-5][0-5]|[01]?\d?\d)[.,]\s*(?:2[0-5][0-5]|[01]?\d?\d)[.,]\s*(?:2[0-5][0-5]|[01]?\d?\d)"

View file

@ -59,12 +59,12 @@
value="none|single|double|low|error"
[/type]
[/union]
[/tag]
[tag]
[/type]
[type]
name="font_gravity"
value="south|east|north|west|auto"
[/tag]
[tag]
[/type]
[type]
name="font_gravity_hint"
value="natural|strong|line"
[/tag]
[/type]

View file

@ -22,4 +22,3 @@
{SUBST_TYPE real}
{SUBST_TYPE color}
{SUBST_TYPE point}
{SUBST_TYPE t_string}

View file

@ -96,9 +96,9 @@
name="tunnel"
min=1
{SIMPLE_KEY id string}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "source" location ()}
{FILTER_TAG "target" location ()}
{FILTER_TAG "filter" unit min=1}
{FILTER_TAG "source" location min=1}
{FILTER_TAG "target" location min=1}
{DEFAULT_KEY bidirectional bool yes}
{DEFAULT_KEY always_visible bool no}
{DEFAULT_KEY allow_vision bool yes}

View file

@ -10,7 +10,7 @@
{SIMPLE_KEY direction dir_list}
{SIMPLE_KEY frequency int}
{SIMPLE_KEY base_score int}
{SIMPLE_KEY hits anim_hits}
{SIMPLE_KEY hits anim_hits_list}
{FILTER_TAG "filter" unit ()}
{FILTER_TAG "filter_second" unit ()}