StandardLocationFilter

From The Battle for Wesnoth Wiki
Revision as of 08:33, 1 March 2008 by Sapient (talk | contribs)

From FilterWML, this is the standard way of filtering on locations. The following attributes and sub-tags are permitted:

  • time_of_day: filter matches only on a given time of day (one of lawful, chaotic or neutral).
  • terrain: comma separated list of terrains. If you are using terrain letters (TerrainCodesWML), then yes you must use commas to separate the terrains; this is different from the the [store_locations] tag or IF_TERRAIN macro (of utils.cfg)! So instead of "gfm", write "g,f,m" here. (See also: Filtering Terrains).
  • x,y: the same as in the unit filter; supports any range (notes)
  • [filter]: a StandardUnitFilter; if present a unit must also be there
  • owner_side: the side of the owner, if this location is an owned village.
  • find_in: name of an array or container variable; if present, the location will not match unless it is also found stored in the variable
  • radius: matches if any location within the radius matches this filter (notes)
  • [filter_radius]: a standard location filter; normally the radius extends outwards from matching locations one step at a time without checking any additional information-- however, if this tag is present, the radius will be restricted so that it can only expand outwards in the directions where it passes the given location filter
  • [and]: an extra location filter. Unless a location matches the [and] filter, then it will be excluded. Note: [and],[or],and [not] extra location filters are considered after everything else in the containing filter (except radius, which is considered last in 1.3.8 and greater); they are then processed in the order encountered.
  • [or]: an extra location filter. If a location matches the [or] filter, then it will count as a match regardless of conditions in previous filters or the containing filter.
  • [not]: an extra location filter. If a location matches the [not] filter, then that location will be excluded.
  • [filter_adjacent_location]: a standard location filter; if present the correct number of adjacent locations must match this filter
    • count: a number, range, or comma separated range; default "1-6"
    • adjacent: a comma separated list of directions; default "n,ne,se,s,sw,nw"

Notes about Coordinate Usage

When specifying coordinates, the following keys are used:

  • x: the first coordinate
  • y: the second coordinate

While some locations should only be one hex (like the starting position of a unit), others filter over multiple hexes. The following syntax is used to filter over multiple hexes:

Dashes(-) are used to have the location be a range of hexes. There must be values before and after the dash; everything in between these numbers (inclusively) is part of the range.

Commas(,) are used to separate coordinates into a list. The x and y lists are then paired up, with each pair representing one hex or range.

Note: although the ordering of locations in a list generally does not matter, the action [move_unit_fake] takes in a list of hexes, and moves an image onto each of those hexes in order.

Notes about Radius Usage

If you aren't storing any locations successfully, it may be because you put the radius or filters in the wrong place for them to combine correctly.
 [have_location]
 terrain=Gg^Vh
 [and]
   x=$x1
   y=$y1
   radius=1
 [/and]
 [/have_location]