TerrainCodesWML

From The Battle for Wesnoth Wiki
Revision as of 14:09, 1 July 2010 by Eleazar (talk | contribs) (Decoding the Terrain Codes: added more)

[edit]WML Tags

A:

abilities, about, achievement, achievement_group, add_ai_behavior, advanced_preference, advancefrom, advancement, advances, affect_adjacent, ai, allied_with, allow_end_turn, allow_extra_recruit, allow_recruit, allow_undo, and, animate, animate_unit, animation, aspect, attack (replay, weapon), attack_anim, attacks (special, stats), avoid;

B:

base_unit, background_layer, berserk, binary_path, break, brush;

C:

campaign, cancel_action, candidate_action, capture_village, case, chance_to_hit, change_theme, chat, checkbox, choice, choose, clear_global_variable, clear_menu_item, clear_variable, color_adjust, color_palette, color_range, command (action, replay), continue, credits_group, criteria;

D:

damage, death, deaths, default, defend, defends, defense, delay, deprecated_message, destination, difficulty, disable, disallow_end_turn, disallow_extra_recruit, disallow_recruit, do, do_command, drains, draw_weapon_anim;

E:

editor_group, editor_music, editor_times, effect, else (action, animation), elseif, endlevel, end_turn (action, replay), enemy_of, engine, entry (credits, options), era, event, experimental_filter_ability, experimental_filter_ability_active, experimental_filter_specials, extra_anim;

F:

facet, facing, fake_unit, false, feedback, female, filter (concept, event), filter_adjacent, filter_adjacent_location, filter_attack, filter_attacker, filter_base_value, filter_condition, filter_defender, filter_enemy, filter_location, filter_opponent, filter_own, filter_owner, filter_radius, filter_recall, filter_second, filter_second_attack, filter_self, filter_side, filter_student, filter_vision, filter_weapon, filter_wml, find_path, fire_event, firststrike, floating_text, found_item, for, foreach, frame;

G:

game_config, get_global_variable, goal, gold, gold_carryover;

H:

harm_unit, has_ally, has_attack, has_unit, has_achievement, have_location, have_unit, heal_on_hit, heal_unit, healed_anim, healing_anim, heals, hide_help, hide_unit, hides;

I:

idle_anim, if (action, animation, intro), illuminates, image (intro, terrain), init_side, insert_tag, inspect, item, item_group;

J:

jamming_costs, join;

K:

kill, killed;

L:

label, language, leader, leader_goal, leadership, leading_anim, levelin_anim, levelout_anim, lift_fog, limit, literal, load_resource, locale, lock_view, lua;

M:

male, menu_item, message, micro_ai, missile_frame, modification, modifications, modify_ai, modify_side, modify_turns, modify_unit, modify_unit_type, move, move_unit, move_unit_fake, move_units_fake, movement_anim, movement costs, movetype, multiplayer, multiplayer_side, music;

N:

not, note;

O:

object, objective, objectives, on_undo, open_help, option, options, or;

P:

part, petrifies, petrify, place_shroud, plague, poison, post_movement_anim, pre_movement_anim, primary_attack, primary_unit, print, progress_achievement, put_to_recall_list;

R:

race, random_placement, recall (action, replay), recalls, recruit, recruit_anim, recruiting_anim, recruits, redraw, regenerate, remove_event, remove_item, remove_object, remove_shroud, remove_sound_source, remove_time_area, remove_trait, remove_unit_overlay, repeat, replace_map, replace_schedule, replay, replay_start, reset_fog, resistance (ability, unit), resistance_defaults, resource, return, role, rule;

S:

save, scenario, screen_fade, scroll, scroll_to, scroll_to_unit, secondary_attack, secondary_unit, section, select_unit, sequence, set_achievement, set_extra_recruit, set_global_variable, set_menu_item, set_recruit, set_specials, set_variable, set_variables, sheath_weapon_anim, show_if (message, objective, set_menu_item), show_objectives, side, skirmisher, slider, slow, snapshot, sound, sound_source, source (replay, teleport), special_note, specials, split, stage, standing_anim, statistics, status, store_gold, store_items, store_locations, store_map_dimensions, store_reachable_locations, store_relative_direction, store_side, store_starting_location, store_time_of_day, store_turns, store_unit, store_unit_defense, store_unit_defense_on, store_unit_type, store_unit_type_ids, store_villages, story, swarm, sub_achievement, switch, sync_variable;

T:

target, team, teleport (ability, action), teleport_anim, terrain, terrain_defaults, terrain_graphics, terrain_mask, terrain_type, test, test_condition, test_do_attack_by_id, text_input, textdomain, theme, then, tile, time, time_area, topic, toplevel, trait, transform_unit, traveler, true, tunnel;

U:

unhide_unit, unit, unit_overlay, unit_type, unit_worth, units, unlock_view, unpetrify, unstore_unit, unsynced;

V:

value, variable, variables, variant, variation, victory_anim, village, vision_costs, volume;

W:

while, wml_message, wml_schema;

Z:

zoom;

Note: the old (1.2) terrain system is no longer documented here. If you have 1.2 maps you will need to convert them using wmllint.

Terrain strings

The following rules hold for terrain strings. Note most of these rules are not validated since it would slow down Wesnoth; not following these rules might break Wesnoth.

  • terrain strings are composed from one or more terrain codes of 2 to 4 characters each, separated by ^.
  • terrain codes start with a capital letter and the following letters are lower case
  • terrain strings can only contain letters, the symbols /|\ which are meant for directional items like bridges and the symbol ^
  • the underscore is used as a leader for internal terrain codes
  • the star '*' can be used for wildcards in some places where a terrain code is required
  • the symbol ^ indicates that a terrain is created with layers, for example Gs^Fp means Forest(Fp) overlayer on Savanna(Gs).

Starting positions are defined by a number followed by 1 space and then the terrain string; this means that a starting position is no longer automatically a keep.

The letters Y,y,Z,z are reserved for UMC so any string containing any of these letters is a custom terrain. Other undefined terrain strings are reserved for future expansion within Wesnoth.

Terrain Table

This is a list of the terrains, the strings used for them in the new map format, the letters used for them in the old map format, their id and the terrains they take their stats from.

String Name Stats from
_off^_usr None (used in map borders)
_s Shroud (use in mask only)
_f Fog (use in mask only)
Ai Ice Snow
Aa Snow
Ww^Bw| Bridge Grassland,Shallow Water
Ww^Bw/ Bridge Grassland,Shallow Water
Ww^Bw\ Bridge Grassland,Shallow Water
Wo^Bw| Bridge Grassland,Deep Water
Wo^Bw/ Bridge Grassland,Deep Water
Wo^Bw\ Bridge Grassland,Deep Water
Ss^Bw| Bridge Grassland,Swamp
Ss^Bw/ Bridge Grassland,Swamp
Ss^Bw\ Bridge Grassland,Swamp
Ce Encampment Castle
Ch Castle
Cv Elven Castle Castle
Cud Dwarven Castle Castle
Chr Ruin Castle
Chw Sunken Ruin Castle,Shallow Water
Chs Swamp Ruin Castle,Swamp
Ke Encampment keep Castle
Kh Keep Castle
Kv Elven Keep Castle
Kud Dwarven keep Castle
Khr Ruined keep Castle
Khw Sunken keep Castle,Shallow Water
Khs Swamp keep Castle,Swamp
Dd^Dc Crater Sand
Dd Desert Sand
Dd^Dr Rubble Hills
Ds Sand
Dd^Do Oasis Sand
Aa^Fpa Snow Forest Snow,Forest
Gg^Fet Great Tree Forest
Gs^Fp Forest
Gs^Ft Tropical Forest Forest
Gg Grassland
Ggf Grassland Grassland
Gs Savanna Grassland
Ha Snow Hills Snow,Hills
Hd Dunes Sand,Hills
Hh Hills
Md Mountains Mountains
Mm Mountains
Qxu Chasm
Ql Lava Chasm Chasm
Qlf Lava (flat) Chasm
Rd Desert road Grassland
Re Dirt Grassland
Rr Road Grassland
Rp Road (Elven Path) Grassland
Re^Gvs Farmland Grassland
Gg^Wm Windmill Grassland
Ss Swamp
Uu Cave
Uu^Ii Cave Lit Cave
Uu^Uf Mushroom Grove
Re^Uf Mushroom Grove Mushroom Grove
Uh Rockbound Cave Cave,Hills
Uh^Ii Rockbound Cave Lit Cave,Hills
Dd^Vda Village Village,Sand
Dd^Vdt Village Village,Sand
Aa^Vea Village Village
Gg^Ve Village Village
Aa^Vha Village Village
Gg^Vh Village
Hh^Vhh Village Village,Hills
Ha^Vhha Village Village,Hills
Mm^Vhh Village Village,Mountains
Gs^Vht Village Village
Uu^Vu Village Village,Cave
Uu^Vud Village Village,Cave
Ww^Vm Village Shallow Water
Ss^Vhs Village Village,Swamp
Ss^Vm Village Swamp
Wo Deep Water
Ww Shallow Water
Wwf River Ford Grassland,Shallow Water
Wwr Coastal Reef Shallow Water
Mm^Xm Impassable Mountains Cave Wall
Md^Xm Impassable Desert Mountains Cave Wall
Xu Cave Wall
Xv Void Cave Wall

Adding terrains

When adding terrains make sure the following files are also checked:

data/multiplayer/factions/* contains favorite positions for the different factions, this is only used for the random map generator at the moment so it is not very important.

data/core/macros/abilities.cfg contains the definition of submerge and ambush so depending on the change these need to be updated.

Decoding the Terrain Codes

The initial letters of each terrain code have a standard meaning, though some are not obvious.

  • A = “Arctic” i.e. frozen
  • B = “Bridge”
  • C = “Castle”
  • D = “Desert”
  • E = "Embellishment"
  • F = “Forest”
  • G = “Grass”
  • H = “Hills”
  • I = "Interior" (possible future use)
  • J = reserved
  • K = “Keep”
  • L = reserved
  • M = “Mountains”
  • N = reserved
  • O = reserved
  • P = reserved
  • Q = "Un-walkable"
  • R = “Road”
  • S = “Swamp”
  • T = reserved
  • U = “Underground”
  • V = “Village”
  • W = “Water”
  • X = "Impassable"
  • Y = Reserved for UMC
  • Z = Reserved for UMC


Additional letters are not always follow the same meaning, but are as consistent as possible.

  • \, |, / = for indicating the direction of bridges
  • a =
  • b =
  • c = "city"
  • d = "dry or desert, deciduous"
  • e = "encampment"
  • f = "flowers, fall"
  • g
  • h = "human"
  • i = "ice"
  • j
  • k
  • l = "lava"
  • m = "mixed"
  • n
  • o = "orc"
  • p = "pine"
  • q
  • r
  • s = "simple"
  • t
  • u = "underground"
  • v = "elvish"
  • w
  • x = "chasm"
  • y = Reserved for UMC
  • z = Reserved for UMC

See Also