1. Battle for Wesnoth
  2. News

Battle for Wesnoth News

Beta Release 1.15.15

The most visible change added with this release is that when a major version is newly installed Wesnoth will migrate user preferences and attempt to redownload add-ons from its new add-ons server.

Translations
  • Updated translations: British English, Bulgarian, Chinese (Traditional), Czech, Italian, Portuguese (Brazil), Russian, Spanish, Turkish
User interface
  • Added a prompt to allow migrating settings and redownloading add-ons used in a previous version of Wesnoth when starting a new versions for the first time.
Miscellaneous and Bug Fixes
  • Fixed: keyboard input during the loading screen intermittently caused a crash (issue #4447)
  • AI: fixed custom synced commands not changing the game state

Beta Release 1.15.14

For players, this is a great chance to take a look at what's changed and been added since 1.14, and there is a lot! A variety of new units have been added, the Dunefolk faction has been entirely rebalanced along with many other units, unit sprites have been updated and animations added, Descent Into Darkness has been overhauled and many other campaigns have also been significantly improved, the mushroom terrain has been revamped (which was surprisingly controversial), the Plan Unit Advancement modification has been mainlined, Isar's Cross now has an amazing background, and many more besides.

For content creators, this is the start of our feature freeze, which means that you can start porting your add-ons to what will eventually become 1.16 without worrying whether each release will break your add-on. Of particular note is that uploading and downloading add-ons are now done incrementally - meaning only things that have changed between versions are uploaded or downloaded - so uploading and downloading add-ons should now be a lot faster. Additionally, you can provide one or more [translation] tags in your _server.pbl to provide a translation of your add-on's title and description into languages other than English. However, there have also been a significant number of API changes, which have resulted in a large chunk of lua especially being marked as deprecated. This is intended as a one time occurrence to clean up and reorganize Wesnoth's APIs; the goal and intention is to never repeat this or anything close to it in any future development series.

And lastly, please report any bugs you run into! With new features come new bugs, and just because we created these features doesn't mean we already know every way they can stop working.

Add-ons client
  • Fixed: using the versions drop-down in small-screen mode returned to the title screen (issue #5810)
  • Fixed: keyboard input in small-screen mode returned to the title screen (part of issue #3059)
Campaigns
  • A Tale of Two Brothers
    • S02: Dialog revisions.
  • Sceptre of Fire
    • Revisions to the last two scenarios.
  • Tutorial
    • S02: Mention the acceleration factor preference.
Lua API
  • Pathfinding functions are now in a new wesnoth.paths module.
    • Pathfinding in map generation now takes an options table as the third argument.
  • New sync module that contains functions for multiplayer synchronization
    • In particular, wesnoth.synchronize_choice is now wesnoth.sync.evaluate_single
  • allow_end_turn and end_turn moved to the wesnoth.interface module
  • wesnoth.message is now wesnoth.interface.add_chat_message
  • Shroud and fog control are now in the wesnoth.sides module
    • Shroud data strings and the special string "all" are no longer supported by place_shroud - only a list of locations is supported
    • wesnoth.map.parse_bitmap transforms a shroud data string into a list of locations
    • wesnoth.map.make_bitmap builds a shroud data string from a list of locations
    • There are now two different ways of altering shroud: place_shroud merges with existing shroud, while override_shroud replaces the entire shroud with the new value.
  • New schedule module for working with schedules and time areas
    • wesnoth.map.get_time_area now returns the area's schedule object
    • The global scenario schedule is available as wesnoth.current.schedule
    • wesnoth.get_time_of_day is split into wesnoth.schedule.get_time_of_day (ignoring illumination) and wesnoth.get_illumination (which considers illumination). Both functions now take the location as the first argument.
    • wesnoth.get_max_liminal_bonus() is now wesnoth.current.schedule.liminal_bonus
    • wesnoth.replace_schedule is now wesnoth.schedule.replace
  • wesnoth.end_level() and wesnoth.get_end_level_data() are now removed - instead, there's an end_level_data field in wesnoth.scenario.that serves both purposes.
  • wesnoth.get_traits() is now wesnoth.game_config.global_traits
  • wesnoth.teleport moved to the units module
Multiplayer
  • Added Isle of Mists, a new single player or coop survival scenario.
Networking
  • Added support for encrypting connection using TLS to multiplayer/addon client/server
  • Moved password hashing code from client to server, relying on TLS to avoid sending cleartext passwords
Packaging
Terrain
  • Added some great tree variations
  • Added 'icy cobbles' (terrain code `Rra`) - mostly useful for the transitions
Translations
  • Updated translations: British English, Chinese (Traditional), Czech, Indonesian, Italian, Japanese, Scottish Gaelic, Slovak, Spanish
Units
  • Added missing Seahorse graphics
  • Revised Jinn (unit config and graphics)
  • Fire Wraith added
  • added LordBob's Jinn, Fire Guardian, and Fire Wraith portraits
  • Moved Naga guardian line from UtBS to core, and made some revisions
  • Dune Apothecary experience needed to level up changed from 100 to 65
  • Dune Captain experience needed to level up changed from 86 to 75
  • Dune Herbalist cost changed form 15 to 14
  • Dune Horse Archer experience needed to level up changed form 70 to 65
  • Naga Sicarius hp changed form 55 to 53 and melee damage changed form 9 to 6, new special "deflect" added to melee attack
  • Fire Guardian can now level into Fire Wraith, experience needed to level up for Fire Guardian changed from 50 to 29
  • Revised statistics of all animal horses, Bay Horse can now level into Great Horse
Wesnoth Formula Language
  • The use of "side" on units and "owner" on terrain objects is now deprecated. Instead, you should use "side_number" or "owner_side", respectively. The old key returns 0 for side 1 and so on, so the new key is preferred.
  • A unit object now has a "terrain" key that returns the terrain object the unit is standing on.
  • Add new functions tod_bonus() and base_tod_bonus() to get the bonus on a specific location
WML Engine
  • add 'unslowable' and 'unpetrifiable' status to immune to slow or petrifies
  • Schema validation now checks whether string values are translatable or not, according to what the schema specifies.
  • Fix schema validation rejecting Lua AI goals
  • Unit special notes are now read directly from weapon specials, abilities, and a few other places, meaning the `[special_note]` tag is usually not required in `[unit]` or `[unit_type]`.
  • A warning is now displayed when the next scenario is unknown (issue #5530).
  • Changed the default duration for `[print]` to 5000 milliseconds, and added support for `duration=unlimited` (PR #5868).
Miscellaneous and Bug Fixes
  • The unit description tooltip in the sidebar now includes the text from `[special_note]`s.
  • Added a collection of item images
  • AI: fixed crash when using attacks aspect with invalidate_on_gamestate_change=no
  • AI: fixed crash when using custom_synced_commands
  • Micro AIs: fixed unit variables getting lost when continuing from replay
  • Fixed AI state initialization problem after reloading

Development Patch 1.15.13

Add-ons client
  • The details panel now shows the list of tags in each add-on.
  • Added a filter based on tags.
Lua API
  • Added `pango_color` to the `wesnoth.colors` table, for easy use in formatted text.
  • Add new function `filesystem.resolve_asset` to convert `[binary_path]` relative paths to data-relative paths.
  • Add new function `filesystem.have_asset` which can determine if an image or sound exists.
  • `wesnoth.have_file`, `wesnoth.read_file`, `wesnoth.image_size` moved to new `filesystem` library
  • Add a more advanced way of manipulating version strings via `wesnoth.version` constructor function.
  • Add a `wesnoth.scenario` data module that consolidates everything there is to know about the current scenario. Much of this information was previously available through `wesnoth.game_config`, but there are some new details too.
  • Fixed a regression introduced in 1.15.5 causing GUI2 widgets set to a hidden state to remain visible but not able to be interacted with.
  • Fixed a regression introduced in 1.15.5 causing GUI2 listboxes to break when cleared and re-filled under certain circumstances.
Packaging
  • Increased minimum required version of SDL to 2.0.8 (PR #5736).
Translations
  • Updated translations: British English, Czech, Dutch, Italian, Russian.
Units
  • Horses added
  • Seahorse added
  • Zombie horse variation added
  • Update piglet/boar graphics
User interface
  • The multiplayer "turns over" dialog now uses each team's colors when showing teams' names.
WML Engine
  • Modify implementation of overwrite_specials attribute for replace yes/no parameter by none/one_side/both_sides and select abilities used like weapons and specials who must be overwrited(owned by fighter where special applied or both)
  • Add a `ability_id_active` attribute to `[filter]`
  • `[terrain_mask]` now accepts `mask_file` as an alternative to an inline mask. The file is loaded from the same place as `map_file` in the `[scenario]` tag (ie, a maps/ subdirectory of your binary path). Anyone who prefers to keep masks separate from regular maps is free to make a subdirectory for their masks (or just keep all their masks inline).
  • `[effect]apply_to=movement` now always affects vision too, except when given the `apply_to_vision=no` attribute
Miscellaneous and Bug Fixes
  • More optimization in the UI drawing code, fixes the crash displaying the full credits (issue #5043).
  • Made GUI.pyw compatible with Python 3.9 (issue #5719).
  • Removed workarounds for bugs affecting older SDL 2.0 versions, including an extra copy of the game screen made during gamemap scrolling (PR #5736).
  • FPS values calculated when the :fps or :benchmark are now written to a file which can then be used to track FPS values over time.
  • Removed old image optimisation scripts, as there's a rewrite in Python.

Development Patch 1.15.12

Add-ons client
  • When uploading or deleting an add-on, the game will now prompt for the required password if it is not present in the `_server.pbl` file.
AI
  • Improved AI decisions about whether an attack with poison is better than one with higher direct damage.
  • Added options to the Patrol Micro AI on whether to notice invisible units, and on attack range.
  • Added a `[filter]` option to the Swarm Micro AI.
  • Replaced several uses of Formula AIs with Micro AIs, and removed Formula AIs from demo scenarios.
  • Removed experimental MP dev Formula AIs.
  • Fixed a crash in the Lurker Formula AI.
Campaigns
  • Descent into Darkness
    • Buffed Malin.
  • Eastern Invasion
    • Dialogue changes in S07b.
  • Legend of Wesmere
    • S16: Replaced the Patrol Formula AI with the Patrol Micro AI.
  • Secrets of the Ancients
    • Reimplemented the zombie recruitment UI.
  • The Rise of Wesnoth
    • Balance changes (issue #5603).
  • The South Guard
    • Fix the new ally's upkeep when choosing the bandit branch.
  • Tutorial
    • Reimplemented the character-choice UI.
  • Under the Burning Suns
    • In S01, fixed one of the mystics spawning in the lake.
Lua API
  • Fix issues with the wesnoth.map module.
Multiplayer
  • Dark Forecast
    • Difficulty rebalanced so that two-player-mode is hard rather than impossible (PR #5673).
    • The weather now changes on side 1's turn instead of side 3's turn (issue #5653).
  • World Conquest
    • Many bugs have been fixed, however WC is still hidden while more bugs are fixed.
    • Converted GUI2 dialogs to WML.
    • Fixed an error in the destruction mechanic.
Packaging
  • Removed the obsolete FindSDL2_ttf cmake module.
Terrain
  • Improved transition between human castle ruins and sunken ruins (issue #5611).
Translations
  • Updated translations: Chinese (Traditional), Czech, Italian.
Units
  • New rock scorpion monster and scorpion zombie variation.
  • Rename tusker/gorer references to boars and piglets, to avoid stepping on existing UMC.
  • Dune Blademaster gold cost changed from 52 to 57.
  • Dune Captain alignment changed from liminal to lawful.
  • Dune Cataphract gold cost changed from 61 to 62.
  • Dune Firetrooper gold cost changed from 50 to 41.
  • Dune Harrier gold cost changed from 46 to 47.
  • Dune Luminary gold cost changed from 53 to 38.
  • Dune Maruder gold cost changed from 52 to 60.
  • Dune Sky Hunter gold cost changed from 47 to 51.
  • Dune Spearmaster gold cost changed from 51 to 57.
  • Dune Wayfarer gold cost changed from 52 to 55.
  • Dune Windbolt gold cost changed from 50 to 49.
  • Dune Warmaster gold cost changed from 56 to 57, hp changed from 57 to 59, alignment changed from liminal to lawful.
  • Naga Ophidian gold cost changed from 24 to 22, melee damage changed from 7 to 6, ranged damage changed from 10 to 12.
  • Naga Ringcaster gold cost changed from 24 to 22.
  • Naga Sicarus gold cost changed from 48 to 46, melee damage changed from 10 to 9, ranged damage changed from 12 to 13.
  • Naga Zephyr gold cost changed from 50 to 46.
  • Wose Sapling gold cost changed from 10 to 11.
  • Wose Shaman gold cost changed from 40 to 27, movement points changed from 3 to 4, melee damage changed from 9 to 12, ranged damage changed from 10 to 11, hp changed from 50 to 56.
  • Horned Scarab gold cost changed from 12 to 11.
  • Fixed the Walking Corpses of some river creatures having poor movement in deep water (issue #5701).
  • New descriptions for the Fire Ant, Roc and Sand Scuttler.
  • Fixed the Giant Scorpion having an empty variation name.
User interface
  • Improved the attack dialog's recommendation about whether an attack with poison is better than one with higher direct damage.
  • Added logs folder path to the Game Version dialog on Windows.
  • Added built-in Lua engine version to the Game Version dialog and `--report`.
  • Made Accelerated Speed toggle announcement not stackable over itself or other announcements.
  • Minor adjustments to the sidebar's minimap area in the default game theme to reclaim empty and uneven space back. Note that this WILL break custom WML themes that use the same sidebar graphics as the default theme.
  • Minor adjustment to the placement of numerals on the debug clock.
  • Players now receive an error message when attempting to save games using illegal file names (issue #5679).
  • Fixed text labels containing only a single link becoming empty (issue #5625).
  • Separated floating labels' duration from the speed of their eventual fade-out.
  • Fixed font family leakage from GUI2 canvases to GUI1 elements such as the in-game chat overlay (issue #5712).
WML Engine
  • In development builds, deprecation warnings are now shown in-game by default.
  • Conditional WML's `[variable]` tag now expects exactly one comparison, and will warn if given none or multiple tests.
  • `[store_reachable_locations]range=vision` now calculates vision, instead of using movement costs and max movement points (issue #4179).
Miscellaneous and Bug Fixes
  • Fixed units with max movement set to zero being given one max movement point by `[unstore_unit]` or when loading a saved game (issue #5638).
  • Fixed an intermittent crash on the loading screen (issue #5629).
  • wmlunits (units.wesnoth.org) no longer incorrectly assumes that units with movement costs equal to their maximum movement can't move into the affected terrains.
  • Fixed a bug where log domains' severity could accidentally be reduced.
  • Changed the verbosity and error-handling of the `run_wml_tests` script.
  • Made `run_wml_tests` automatically skip tests which need strict mode when running without strict mode.
  • Made optimizations in the UI drawing code, these shouldn't have visible effects (PR #5697).
  • Optimized the command-line `wesnoth_addon_manager` tool.

Patch 1.14.16 and Development Patch 1.15.11

Patch 1.14.16


[h2]AI[/h2]
  • Experimental AI: fixed a bug identifying hexes next to healers as healing locations
  • Goto Micro AI:
    • Fixed bug when the avoid_enemies parameter is set to very small values
    • Fixed rare bug with blocked paths when ignoring enemies
  • Protect Unit Micro AI: fixed bug when a unit is not on the AI side
  • Multipack Wolves Micro AI: fixed error when a wolf is fully surrounded

[h2]Campaigns[/h2]
  • Dead Water:
    • Fix some characters’ names, which hadn’t been marked as translatable.
  • Son of the Black-Eye:
    • S09: Name the enemy team.
  • The South Guard:
    • S06b: Fix some enemies’ ambush abilities (issue #5383).

[h2]Editor[/h2]
  • Re-enabled topics for the terrain editor in the in-game help browser
  • Added help topics for the scenario editor’s tools
  • Added documentation about the files written by the editor

[h2]Translations[/h2]
  • Updated translations: British English, Catalan, Chinese (Traditional), French, Portuguese (Brazil), Spanish, Turkish

[h2]User interface[/h2]
  • Fixed color fringing issues with ClearType on Windows.
  • Reduced font sizes for the unit HP/XP/MP/Vision/Defense displays on the sidebar at small resolutions to avoid overlaps (issue #5575).
  • Rearranged the unit XP and vision displays on the sidebar to avoid running out of room for the XP display (issue #5575).
  • Reduced font size for the ToD counter on the sidebar to avoid it being ellipsized too often.
  • Gave the turn timer display the same icon as the system clock display.
  • Anchored the Observers icon to the sidebar again in a way that does not allow it to overlap into it (issue #5575).
  • Fixed the turn timer/system clock display on the top bar incorrectly using a larger font size at small resolutions.
  • Rearranged the Defense display label on the sidebar slightly. It remains invisible in Wesnoth 1.14, however.

[h2]Miscellaneous and Bug Fixes[/h2]
  • Added support to wmlxgettext for double-quote characters in translatable raw strings
  • Fixed an error message and the AI leader potentially not moving when it cannot reach a keep because it's occupied by an allied unit
  • Fixed display zoom not being taken into account when using the `x`, `y`, `directional_x` and `directional_y` attributes in unit animations.
  • Fixed `[terrain_defaults]` and `[resistance_defaults]` (issue #5308).
  • Fixed an attack prediction assert that happened in rare combinations of the defender slowing and the attacker potentially leveling up, and a specific combination of standard and Monte Carlo attack evaluations (issues #5533 and #5002)


Patch 1.15.11


[h2]AI[/h2]
  • Improved the retreat_injured candidate action:
    • Made the CA independent of the caution aspect, which could previously cause almost healthy units to retreat
    • Added two new aspects for customizing the retreat behavior: retreat_factor and retreat_enemy_weight
    • In the default setting, only healing locations are considered as retreat locations and enemy threats are not the dominant consideration any more, which means units will not retreat to the edge of the map
    • Fixed a bug identifying hexes next to healers as healing locations
    • Miscellaneous other improvements to the internal rating function
  • Messenger Micro AI: added [avoid] tag functionality. In the process, two of the ai_helper functions also had this functionality added: move_unit_out_of_way() and get_closest_location()
  • Goto Micro AI:
    • Added optional remove_movement parameter (issue #5580)
    • Fixed how the avoid_map and avoid_enemies parameters interact
    • Fixed rare bug with blocked paths when ignoring enemies
    • Fixed bug when the avoid_enemies parameter is set to very small values
  • Protect Unit Micro AI: fixed bug when a unit is not on the AI side
  • Multipack Wolves Micro AI: fixed error when a wolf is fully surrounded

[h2]Campaigns[/h2]
  • Delfador's Memoirs
    • Adjust campaign difficulty
  • Eastern Invasion
    • Reveal shroud in S2 and S10, to be fairer the first time a player sees those scenarios
    • Balance the carryover gold on the branching campaign paths between S06 and S09
    • Various small fixes
  • Liberty
    • Revise dialogue
    • Reduce difficulty
  • Sceptre of Fire
    • Adjust campaign difficulty
  • Secrets of the Ancients
    • Adjust campaign difficulty
  • Son of the Black Eye
    • Adjust campaign difficulty
  • The South Guard
    • Reduce campaign difficulty
  • Tutorial:
    • Disabled end credits (issue #5543).
  • Under the Burning Suns:
    • Adjust campaign difficulty

[h2]Translations[/h2]
  • Updated translations: British English, Chinese (Traditional), Czech, Italian

[h2]Units[/h2]
  • Beast-rider Walking Corpse variation (for UtBS Quenoth Tauroch line, but generally available)

[h2]User interface[/h2]
  • Fixed color fringing issues with ClearType on Windows.
  • Improved the Load dialog when there are no saved games for the current version, and also when there are corrupted files.
  • Re-added the pop-up when there are no saved games at all (issue #5517).
  • Fixed resource leak in the Pango text rendering pipeline when using the characters_per_line constraint.
  • Make the warning about loading saves from old versions much clearer.
  • Made legacy GUI1 scrollbars match regular GUI2 scrollbars.
  • Reduced font sizes for the unit HP/XP/MP/Vision/Defense displays on the sidebar at small resolutions to avoid overlaps (issue #5575).
  • Rearranged the unit XP and vision displays on the sidebar to avoid running out of room for the XP display (issue #5575).
  • Reduced font size for the ToD counter on the sidebar to avoid it being ellipsized too often.
  • Gave the turn timer display the same icon as the system clock display.
  • Anchored the Observers icon to the sidebar again in a way that does not allow it to overlap into it (issue #5575).
  • Fixed the turn timer/system clock display on the top bar incorrectly using a larger font size at small resolutions.
  • Made the Defense display label on the sidebar visible (a side-effect of replacing SDL_ttf) and rearranged it slightly.
  • Set the correct default text color for in-game UI elements instead of #ffffff white for consistency with other UI elements.
  • Increased font sizes in Help and some legacy UI elements.
  • Minor clean-up of game menus display.
  • Restyled dropdown menu buttons to look like buttons rather than textboxes.
  • Fixed missing display resolution ratios in Preferences -> Display (regression introduced in 1.15.10).

[h2]WML Engine[/h2]
  • Standard Location Filters now support gives_income=yes|no to make it simpler to match villages regardless of owner
  • Fixed ThemeWML `[label] font_rgb=` generating text elements with broken UTF-8 sequences.
  • abilities used like weapon can call a [teaching_anim] instead of [leading_anim] now.
  • The campaign end screen is no longer displayed when `[campaign]/[endlevel] end_credits=` is set to a false value.
  • Fixed `end_credits=` in `[campaign]` not having any effect.

[h2]Miscellaneous and Bug Fixes[/h2]
  • Added support for 1.14’s tag names in `[terrain_defaults]` (issue #5308).
  • Replaced legacy SDL_ttf/FriBidi-based font rendering used in old GUI1 code paths with Pango.
  • Fixed an attack prediction assert that happened in rare combinations of the defender slowing and the attacker potentially leveling up, and a specific combination of standard and Monte Carlo attack evaluations (issues #5533 and #5002)
  • Fixed test scenarios in add-ons not working