AchievementsWML: Difference between revisions

From The Battle for Wesnoth Wiki
Octalot (talk | contribs)
→[achievement]: Note where [sub_achievement] goes
 
(23 intermediate revisions by 3 users not shown)
Line 5: Line 5:
== Achievements ==
== Achievements ==


Achievements are defined in an achievements.cfg file located at the root directory of an add-on (in the same folder as the _main.cfg). The WML in the achievements.cfg file is loaded completely independently of any other WML in your add-on or in mainline Wesnoth - this means you do not have access to any macros that are not defined in this file.
Achievements are defined in an achievements.cfg file located at the root directory of an add-on (in the same folder as the _main.cfg). The WML in the achievements.cfg file is loaded completely independently of any other WML in your add-on or in mainline Wesnoth - this means you do not have access to any macros that are not defined in this file nor the context setup by the [[BinaryPathWML|[binary_path]]].


=== [achievements_group] ===
=== [achievement_group] ===


The following keys and tags are recognized in '''[achievements_group]''' tags:
The following keys and tags are recognized in '''[achievement_group]''' tags:
* '''content_for''': The internal identifier for this group of achievements. The standard usage would be to have this be unique per add-on or per piece of content (campaign, modification, etc), however there is no limitation on how achievement groups are declared - an add-on can define as many achievement groups as it wants.
* '''content_for''': The internal identifier for this group of achievements. The standard usage would be to have this be unique per add-on or per piece of content (campaign, modification, etc), however there is no limitation on how achievement groups are declared - an add-on can define as many achievement groups as it wants. If multiple achievements groups are defined with the same '''content_for''' value, then their achievements are merged into a single combined list.
* '''display_text''': (translatable) The text to be displayed on the content dropdown of the achievements dialog.
* '''display_name''': (translatable) The text to be displayed on the content dropdown of the achievements dialog.
* '''[achievement''': See below.
* '''[achievement]''': See below.


=== [achievement] ===
=== [achievement] ===


The following keys and tags are recognized in '''[achievement]''' tags:
The following keys and tags are recognized in '''[achievement]''' tags:
* '''id''':  
* '''id''': (''required'') The internal ID to be used when identifying this achievement. Must be unique within an [achievements_group].
* '''name''':  
* '''name''': (''required'') (translatable) The achievement name to display on the achievements dialog. Supports Pango markup.
* '''name_completed''':  
* '''name_completed''': (translatable) (optional) The achievement name to display on the achievements dialog when this achievement has been completed. Supports Pango markup.
* '''description''':  
* '''description''': (''required'') (translatable) The achievement description to display on the achievements dialog. Supports Pango markup.
* '''description_completed''':  
* '''description_completed''': (translatable) (optional) The achievement description to display on the achievements dialog when this achievement has been completed. Supports Pango markup.
* '''icon''':  
* '''icon''': The image to display next to this achievement on the achievements dialog, scaled to be 72x72 pixels. '''This must be the full path to the image!''' For example - <code>data/core/images/icons/potion_green_small.png</code> (mainline) or <code>data/add-ons/YourAddon/images/icons/some_image.png</code> (add-on). This will be automatically scaled to 72x72 pixels. If the achievement is incomplete it will be shown in greyscale.
* '''icon_completed''':  
* '''icon_completed''': (optional) Overrides '''icon''' when the achievement has been completed; defaults to the value of '''icon'''.
* '''hidden''':  
* '''max_progress''': (optional) The progress value at which this achievement is considered to be complete. Do not use this in an achievement which also uses [[AchievementsWML#sub_achievement|[sub_achievement]]].
* '''hidden_name''':  
* '''sound''': (optional) The path to a sound to play when the achievement is completed. '''This must be the full path to the sound!''' For example - <code>data/core/sounds/dwarf-laugh.wav</code> (mainline) or <code>data/add-ons/YourAddon/sounds/some_sound.ogg</code> (add-on).
* '''hidden_hint''':
* '''[sub_achievement]''': see below
 
=== [sub_achievement] ===
 
{{DevFeature1.17|17}}
 
This is a way to show progress towards an achievement, identifying exactly which stages have been completed. An [achievement] which has [sub_achievement] tags should not have a max_progress attribute; if both are used in the same [achievement], the behavior is implementation-defined.
 
The following keys are recognized in '''[sub_achievement]''' tags:
 
* '''id''': (''required'') The internal ID to be used when identifying this sub-achievement. Must be unique within an [achievement].
* '''description''': (''required'') (translatable) The text to display when hovering over the sub-achievement's icon.
* '''icon''': The image to display for to this sub-achievement on the achievements dialog, scaled to be 36x36 pixels. '''This must be the full path to the image!''' For example - <code>data/core/images/icons/potion_green_small.png</code> (mainline) or <code>data/add-ons/YourAddon/images/icons/some_image.png</code> (add-on).
 
A maximum of 28 sub-achievements can be defined for an achievement.

Latest revision as of 13:32, 29 October 2026

[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_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, core, credits_group, criteria;

D:

damage, damage_type, 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_ability, 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, fonts, for, foreach, found_item, 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_side, 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, map_data, 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, reset_fog, resistance (ability, unit), resistance_defaults, resolution, resource, return, role, rule;

S:

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, 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 (action, scenario), 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;

(Version 1.17.13 and later only)

Achievements

Achievements are defined in an achievements.cfg file located at the root directory of an add-on (in the same folder as the _main.cfg). The WML in the achievements.cfg file is loaded completely independently of any other WML in your add-on or in mainline Wesnoth - this means you do not have access to any macros that are not defined in this file nor the context setup by the [binary_path].

[achievement_group]

The following keys and tags are recognized in [achievement_group] tags:

  • content_for: The internal identifier for this group of achievements. The standard usage would be to have this be unique per add-on or per piece of content (campaign, modification, etc), however there is no limitation on how achievement groups are declared - an add-on can define as many achievement groups as it wants. If multiple achievements groups are defined with the same content_for value, then their achievements are merged into a single combined list.
  • display_name: (translatable) The text to be displayed on the content dropdown of the achievements dialog.
  • [achievement]: See below.

[achievement]

The following keys and tags are recognized in [achievement] tags:

  • id: (required) The internal ID to be used when identifying this achievement. Must be unique within an [achievements_group].
  • name: (required) (translatable) The achievement name to display on the achievements dialog. Supports Pango markup.
  • name_completed: (translatable) (optional) The achievement name to display on the achievements dialog when this achievement has been completed. Supports Pango markup.
  • description: (required) (translatable) The achievement description to display on the achievements dialog. Supports Pango markup.
  • description_completed: (translatable) (optional) The achievement description to display on the achievements dialog when this achievement has been completed. Supports Pango markup.
  • icon: The image to display next to this achievement on the achievements dialog, scaled to be 72x72 pixels. This must be the full path to the image! For example - data/core/images/icons/potion_green_small.png (mainline) or data/add-ons/YourAddon/images/icons/some_image.png (add-on). This will be automatically scaled to 72x72 pixels. If the achievement is incomplete it will be shown in greyscale.
  • icon_completed: (optional) Overrides icon when the achievement has been completed; defaults to the value of icon.
  • max_progress: (optional) The progress value at which this achievement is considered to be complete. Do not use this in an achievement which also uses [sub_achievement].
  • sound: (optional) The path to a sound to play when the achievement is completed. This must be the full path to the sound! For example - data/core/sounds/dwarf-laugh.wav (mainline) or data/add-ons/YourAddon/sounds/some_sound.ogg (add-on).
  • [sub_achievement]: see below

[sub_achievement]

(Version 1.17.17 and later only)

This is a way to show progress towards an achievement, identifying exactly which stages have been completed. An [achievement] which has [sub_achievement] tags should not have a max_progress attribute; if both are used in the same [achievement], the behavior is implementation-defined.

The following keys are recognized in [sub_achievement] tags:

  • id: (required) The internal ID to be used when identifying this sub-achievement. Must be unique within an [achievement].
  • description: (required) (translatable) The text to display when hovering over the sub-achievement's icon.
  • icon: The image to display for to this sub-achievement on the achievements dialog, scaled to be 36x36 pixels. This must be the full path to the image! For example - data/core/images/icons/potion_green_small.png (mainline) or data/add-ons/YourAddon/images/icons/some_image.png (add-on).

A maximum of 28 sub-achievements can be defined for an achievement.

This page was last edited on 29 October 2026, at 13:32.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.