Permalink
Switch branches/tags
Find file Copy path
15002 lines (14825 sloc) 758 KB

Version 1.15.0-dev

Campaigns

  • A Tale of Two Brothers
    • S2 'Chase': improved behavior of undead side leader with custom AI

Engine

  • Windows 7 is now the minimum supported Windows version.
  • Removed incomplete joystick support.
  • Removed map scaling algorithm customization. Nearest-neighbor scaling will now always be used.
  • Removed option to disable unit and item halos.

Language and i18n

  • Updated translations: British English, Bulgarian, Chinese (Simplified), Chinese (Traditional), Czech, French, Galician, German, Hungarian, Italian, Japanese, Polish, Scottish Gaelic, Slovak, Spanish, Ukrainian.

Lua API

  • Allow specifying custom flags (in particular teleport) when using a custom cost function in wesnoth.find_path

Packaging

  • OpenMP support has been removed. It is no longer an optional build-time dependency.

Units

  • Saurian warriors are now female. (issue #3392)

WML engine

  • Support formula= key in [variable] ConditionalWML
  • Support to_location in [move_unit], taking a special location ID
  • Support dir in [move_unit] to perform relative movements
  • Support location_id in [teleport], [recall], [unstore_unit] for the target location
  • Support a comma-separated list for location_id key in SLF
  • Support [filter_weapon] in leadership and resistance abilities, which activates the ability only when the affected unit is using a matching weapon.
  • Support [filter_second_weapon] in leadership and resistance abilities, which activates the ability only when the affected unit's opponent is using a matching weapon.
  • Support WFL and percentages in [random_placement]num_items=
  • Support [or] in [filter_wml] and similar places
  • Support globbing in [filter_wml] via glob_on_* keys
  • Add trunc as a valid value for [set_variable]round=
  • Remove support for speaker=id in SUF (but retain in [message])
  • Support saner units for some formatting options in [message]
  • Support underline=yes|no in [message]
  • Support [set_variable]root=cube and root=integer
  • Support force_scroll in [move_units_fake] (default no)
  • Support facing= in [role][auto_recall]
  • Support lists for special and special_active in SWF
  • Support usage and alignment in SUF
  • Deprecate [replace_map]map= in favor of map_data=
  • Add u and v variables in ~ADJUST_ALPHA() and ~CHAN()
  • Add clear_shroud in [move_unit] to clear shroud as the unit moves
  • Support male_voice and female_voice in [message]
  • Support [break], [continue], and [return] in [random_placement]
  • [remove_sound_source] now accepts a comma-separated ID list

Version 1.14.4+dev

AI

  • Fixed crash in AI code when a side has multiple leaders.
  • Fix AI ignoring teleport locations when moving leader to leader goals.
  • Fast Micro AI: Fix bug crashing the AI when units with chance-to-hit specials without id are on map.

Campaigns

  • Heir to the Throne:
    • S6: Allow canceling an attack when a move+attack spawns enemy units (issue #3459).
    • S6: Change the trigger for spawning undead reinforcements (issue #3459).
    • S17: Add dialog explaining the lava game mechanic and an easter egg (issue #3473).
  • Liberty:
    • S3: Add story and war drums music.
  • Northern Rebirth:
    • S12: empty sides are hidden.
    • S13: allied leaders whose death causes defeat won't leave their keep and the lich brothers and Krash got more gold.
  • Sceptre of Fire:
    • S4: a cave entrance has been added.
    • S5: Gryphon Riders are now available starting form S5 (formerly S3).
    • S7: it's now impossible to kill all pursuers.
  • Secrets of the Ancients:
    • Fix dialog said by wrong unit & revert previous fix (issue #3294).
  • The Hammer of Thursagan:
    • S10: Fix objectives requiring too much of the player.
  • The South Guard:
    • S2: the case where Deoran is not sent to the Citadel is handled better.
    • S2: enemy units will no longer neutralize villages instead of capturing or burning them. This also means certain units will no longer be hidden in the Game Stats list.
    • S4: bodyguards are never spawned next to other units, and always in forest.
    • S5: zombies have now one castle with two leaders.
    • S6a: mermen leave after this scenario and will no longer be available.
    • S7a & S8a: a certain hero may now die.
  • Tutorial:
    • Added more information to the Status Table prompt about how to access it (issue #2883).
  • Under the Burning Suns:
    • New graphics for Eloh.

Multiplayer

  • A New Land: Fixed village gold being 1 instead of 2.
  • Fixed Random Start Time not working (issue #3515).
  • Fixed a possible crash when leaving a game as an observer (issue #3017).
  • Fixed Start Game locked when other players abort the faction/leader selection dialog (issue #3452).
  • Fixed Skip Replay when joining MP campaigns.
  • Fixed OOS errors when undoing after ally chat.
  • Fixed game freezing upon droiding with Delayed Shroud Updates (issue #3453).
  • Fixed require_scenario and require_era attributes.

Language and i18n

  • Updated translations: British English, Chinese (Traditional), Czech, French, German, Hungarian, Italian, Japanese, Scottish Gaelic, Ukrainian.

User Interface

  • On laptop computers we now show how much battery you have left.
  • MacOS: Fixed moving the mouse with a touchpad also scrolling GUI dialogs.
  • MacOS: Add build number to OS version report.
  • Fix layout of Preferences window with some localizations (such as Czech).
  • Load Game now shows the chosen difficulty with the same name that you originally selected.
  • Load Game now shows the modifications enabled in the selected savegame (issue #3495).
  • Force leader sprites larger than 72x72 to be downscaled in Load Game (issue #3474).
  • Add left padding to dialog messages shown with a portrait on the right (issue #1938).
  • Addon Manager uses clearer terms for sort order.
  • Fix reversed sort order by unit level in Unit List and Recall Unit.
  • Fixed crash in Recall Unit when no units match the filter (issue #3475).

WML engine

  • Fixed [animate_unit] and [heal_unit] preventing unit halo from disappearing if the unit dies later (issue #3509).

Miscellaneous and bug fixes

  • Fix some minor problems with the macOS package.
  • Fixed crash when trying to attack with a unit without usable weapons (issue #3424).
  • Fixed the debug mode Create Unit dialog crashing when changing the gender of the previous selection after causing the list to come up empty using the filter box.
  • Allow searching by race and internal unit type id with the Create Unit filter box as well.
  • wmlxgettext is now included in release packages, so a separate download is no longer required to use it with GUI.pyw.
  • Fixed crash when pressing Reset replay (issue #3439).
  • Fixed editor cannot add starting location for > 9 players.
  • Fixed crash in Lua tstring comparision (issue #3541).
  • Fixed objectives at scenario start using old/cached values of conditions/variables (issue #3544).
  • Show an error message when trying to open the Lua console while not in debug mode.
  • On enemy side's turn, don't scroll to that side's leader if it's invisible.
  • Fixed :droid ignoring its second argument.
  • Fixed :droid giving no feedback when successful.

Version 1.14.4

Security Fixes

  • Fixed Lua being able to escape sandboxing via load/loadstring (CVE-2018-1999023).

Add-ons server

  • Made it so plain-text .po catalogues in add-ons are detected and added to the list of translations for them.

Campaigns

  • Dead Water:
    • In 'Tirigaz', take the situation into account of orcs being killed either first or by undead.
  • Delfador's Memoirs:
    • Fix hero units costing upkeep (issue #3277)
  • Eastern Invasion:
    • Fixed missing prisoners and loss of recallable units in 'Captured'.
  • Northern Rebirth:
    • Level 0 units are not available anymore after scenario 5
  • Secrets of the Ancients:
    • Adjust gender of enemies to better match story in S11 & 21 (issue #3294)
    • Simplify dialog to fix possible confusion in S16 (issue #3291)
    • Have nagas be able to recruit in S21 (issue #3293)
  • The South Guard:
    • S4: undead leader won't leave the castle anymore
    • S5: the untypical situation that one can defeat the lich before finding Urza Afalas is now handled
  • Under the Burning Suns:
    • S11: added custom graphics for the citadel.
    • S12: clarified the alien bodies' weaknesses.
    • Various visual improvements.

Editor

  • Fixed saving a map as a scenario not enabling scenario editor tools.

Graphics

  • New attack animation for the Peasant.
  • Tweaked the Ruffian's attack animation timing.

Language and i18n

  • Updated translations: British English, Bulgarian, Chinese (Simplified), Chinese (Traditional), Czech, French, German, Hungarian, Japanese, Scottish Gaelic, Slovak, Spanish

Lua API

  • Upgrade to Lua 5.3.5.

Multiplayer

  • Non hosts can now change their faction in the mp wait dialog.

Multiplayer server

  • Fixed lobby and whisper messages not having a maximum length.
  • Partly fixed the mp server breaking translatable strings.

User interface

  • Improved the layout of the Statistics dialog.
  • Allow changing dropdown menu selections with the scrollwheel (FR #3251).
  • Fixed lobby chat box scrolling to top on a new message if it isn't at the bottom (issue #2789).
  • Fixed the unit preview pane not showing the default race icon when detailing a single unit's stats.
  • Sort units secondarily by XP in the unit list dialog.
  • Whiteboard related bugfixes

WML engine

  • Fixed errors about WESNOTH_VERSION not being defined when trying to load add-ons that have preprocessor errors (issues #1924, #1634).

Miscellaneous and bug fixes

  • Added an advanced preference to enable experimental PRNG combat.
  • Campfires use illumination instead of a different ToD.
  • Linux builds now enable security hardening by default.
  • Fixed MP admins being unable to observe private games.
  • Fixed MP faction, leader, and leader gender changes persisting even if the selection dialog is dismissed.
  • Fixed an issue with positioned sound sources ignoring the volume set in Preferences after going off the audible radius and back (issue #3280).
  • Fixed wmllint choking on gzipped binary files (e.g. gzipped tarballs).
  • Fixed wmllint crashing on nonexistent paths provided in the command line (issue #3286).
  • Slight changes to the objectives dialogue (pr #3309)
  • Greatly improved touch control support.
  • Fixed wmlindent crashing on nonexistent paths provided in the command line (issue #3346).
  • [do_command][attack] can no longer invoke disabled attacks.
  • [delay] is now skipped during preload events.
  • Fixed wrong simulated movement points when planning to capture a village.
  • Fixed attacks wrongly being disabled in the UI.

Version 1.14.3

AI

  • Fixed crash in presence of units with negative hitpoints (issue #3042).
  • Efficiency improvements to filter evaluations in the Goto Micro AI and some AI helper functions

Campaigns

  • Dead Water:
    • Fix possibility of villagers blocking pickup of sword in S10 The Flaming Sword (issue #3207).
  • Descent Into Darkness:
    • New Parthyn map in S1 and S6.
  • Northern Rebirth:
    • Reduced starting gold and income in scenarios 10 to 13
  • Secrets of the Ancients:
    • Fix S09 Training Session not ending when all dark adepts die (issue #3192)
  • Tutorial:
    • S2: made enemy starting gold equal to that of the player.
  • Under the Burning Suns:
    • Added portrait and updated sprite for Giant Ant.

Language and i18n

  • Updated translations: British English, Chinese (Traditional), Czech, French, Italian, Japanese, Scottish Gaelic, Spanish

Multiplayer server

  • Fixed lan_server option not causing the server to exit once vacated, e.g. when using the Host Networked Game option from the Multiplayer menu in the game (issue #3206).
  • It is now possible to query the client version of other players.

Music and sound effects

  • The music now changes immediately when you load a save file (issue #2602).
  • Fixed Lua errors when setting a music track that cannot be found when the playlist is already empty, e.g. if there's no music installed for the game (issue #3194).

WML engine

  • Removed validation to ensure units cannot have negative hitpoints. We learned that the ability to create such units is documented, and thus disallowing it was an API change. Since API changes aren't allowed in the stable branch, we have reverted it.

Miscellaneous and bug fixes

  • Fixed an occasional crash at the loading screen related to multi-thread access of the image cache.
  • [kill] animate=yes no longer scrolls to units through fog or shroud, thus matching 1.12's behavior again.
  • [message] displays the unit type name when a nameless unit speaks and no custom caption= is specified (issue #3211).
  • do_not_list=yes units are no longer excluded from the debug mode-only Create Unit dialog.
  • Fixed a rare issue where disabled attacks could cause the wrong attack to be initially selected in the Unit Attack dialog. This bug also had the potential to cause units to the wrong attack when engaging or viewing damage calculations.
  • Fixed [scenario] map_file= being unusable in most circumstances.

Version 1.14.2

Campaigns

  • Northern Rebirth:
    • S02.1 Infested Caves: keep side 8 AI leader from wandering off too far and ending up on a keep with only one hex for recruiting.
    • S02.1 Infested Caves: AIs are less likely to kill each other in early game, which would make it harder for the player otherwise.
    • S02.1 Infested Caves: Dwarvish allies are also less likely to die.
    • S02.1 Infested Caves: minor map tweaks and improvements.
    • S05 The Pursuit: removed a bottleneck and tweaked Rod of Justice.
  • Sceptre of Fire:
    • In 'Caverns of Flame', fixed various issues with the volcano eruption.
  • Under the Burning Suns:
    • Various Quenoth unit graphics updates.
  • Descent into Darkness:
    • In 'A small Favor', disabled a not intended way to win the scenario.
  • Secrets of the Ancients:
    • Bats are transformed to normal ones already after S5

Graphics

  • Fixed a minor team coloring mistake in the north-facing Revenant standing animation.

Language and i18n

  • Updated translations: British English, Chinese (Simplified), Czech, French, Galician, German, Italian, Japanese, Scottish Gaelic, Spanish, Ukrainian

User interface

  • List boxes (MP lobby game list in particular) now keep the scroll position when they change, instead of keeping the selected item visible (issue #3016).
  • Fixed MP lobby player list scrolling to top when it changes
  • Fixed the first unit sometimes not being selected when opening the Recall dialog.
  • Fixed a crash when using very large portraits in [message] (issue #2912)
  • Added a button to access the version info dialog to Preferences.
  • Removed player list sorting options in the MP lobby. The list is now automatically sorted alphabetically, friends first.
  • Rearranged campaign difficulty menu layout

Terrains

  • Removed hidden terrains that were not supposed to make it to 1.14: ^Prg, ^Prgo, ^Pwd, ^Pwdo

Miscellaneous and bug fixes

  • Fixed memory leak in terrain filter code. In a huge map with Silver Mages, it could leak several gigabytes of memory in a long session.
  • Fixed: unit halo remained after undoing a recall (issue #3065)
  • Fixed: unit halo intensity doubled during AMLA animation
  • [change_theme] no longer causes a Lua error when theme= is not specified instead of explicitly set to an empty string.
  • [change_theme] no longer requires running a separate action to update the UI afterwards (e.g. [redraw]) and the status panels are updated immediately. as well.
  • Lua random map generator: fixed error when flipping map; specifically this also fixes an assert at the start of HttT S7 (Sceptre of Fire) that had a 50% chance of being triggered
  • Experimental AI: fixed recruiting not working on maps without enemies, such as the first two turns of Dark Forecast
  • Experimental AI: fixed recruiting evaluations sometimes not being updated
  • Replaced deprecated Lua code and all remaining uses of FOREACH and MESSAGE macros
  • Fixed [color_adjust] interacting poorly with time of day color shifts and values outside the [-255, 255] range (issue #3144).
  • Fixed a regression from 1.13.10 where modification option values couldn't be properly saved in arrays.
  • Added stricter validation to ensure units cannot have negative hitpoints, except during specific attack-related events.
  • Added deprecation notices for several macros that had them missing before.
  • [message] no longer scrolls to units through fog or shroud so it matches 1.12's behavior.
  • Fixed animation-wide text_color and blend_color keys being overwritten. This fixes level-in and level-out animations sometimes fading to black instead of white.
  • Fixed [animate_unit] freezing the game when observing MP games (#2970).
  • Fixed carryover behaving differently when loading a start-of-scenario save (issue #3152).
  • Fixed turn replay function in MP.
  • Fixed savegames being created even when not needed (issue #3150).
  • Fixed handling of extra_recruit in planning mode (issue #3100).
  • Fixed handling of skirmisher in planning mode.
  • Fixed handling of filter_recall in planning mode.
  • Fixed possible segfault at game end.
  • Fixed require_resource in [resource].
  • Fixed require_scenario=yes not working with map_generation (issue #3105).

Version 1.14.1

Campaigns

  • Eastern Invasion:
    • In 'Captured', fixed units incorrectly costing upkeep after leveling up.
  • Secrets of the Ancients
    • Fixed minor unit naming inconsistencies (issues #2844 and #2846).
  • Under the Burning Suns
    • Added custom graphics for the broken tree in S1.
    • Various sprite and image updates.
    • Fixed a bug in the formation ability causing defense bonuses not being received in some cases.

Language and i18n

  • Updated translations: British English, Chinese (Simplified), Czech, French, Galician, German, Italian, Japanese, Scottish Gaelic, Slovak, Spanish
  • Fixed Logging Options tooltips not being translatable (issue #2837).
  • Add command-line argument to disable the filtering of incomplete translations in the language selection list.

Multiplayer server

  • Added support for matching user, IP, and email bans from a forums board when the forum_user_handler is enabled and active. (IP and email bans with wildcards are not supported yet.)
  • Fixed various instances of the server crashing under certain conditions.

Performance

  • Added an option to disable the FPS limiter for a slight performance boost.

Units

  • Changed the plural name for the merfolk race from Mermen to Merfolk (issue #2940) and replaced a few instances in core unit or terrain descriptions accordingly.

User interface

  • Removed individual Join/Observe buttons for each game in the MP Lobby.
  • Highlight the titles of MP games with vacant slots.
  • Improved MP Lobby layout on low resolutions.
  • Improved reporting of network errors in the MP lobby (issue #3005).
  • Ensure the chat widget remains the correct size even after a window resize.
  • Custom MP game names are now capped at 50 characters.
  • Restored Era info to main MP game display.
  • Improved the resolution selection criteria for the MP Lobby.
  • Fixed inactive weapon specials being displayed in the Unit Attack dialog unlike in 1.12 (issue #3033).

Miscellaneous and bug fixes

  • Removed misleading tooltip text stating registered nicknames are optional for the official MP server.
  • Attempting to save a screenshot with an unsupported format now shows an error message, instead of saving the screenshot as BMP with the requested extension.
  • It is now possible to disable logdomains in the Logging Options dialog.
  • Fixed the wesnoth(6) manpage claiming the default log level is 'error' when it has been 'warning' since version 1.9.0.
  • Document --log-none in the wesnoth(6) manpage.
  • Avoid trying to load invalid base64-encoded data URIs.
  • wesnoth_addon_manager and the addons.wesnoth.org web index can now use data URIs.
  • Fixed a crash when using certain invalid color= values.
  • Implemented a workaround for an unhandled std::bad_cast from string comparison functions that caused a crash-to-desktop when opening Preferences among others (issue #3050).
  • Fixed many crashes and out-of-sync errors when using the planning mode.

Version 1.14.0

Campaigns

  • Under the Burning Suns
    • New set of Quenoth faction and character portraits by LordBob.
    • Updated sprites for several Quenoth units.
    • Fixed "Invalid WML found" error that can be caused by the Quenoth Youth support ability.

Help browser

  • Temporarily hidden Editor section as it is mostly incomplete and of little use right now (issue #2963).

Language and i18n

  • Fixed Version label on the title screen not being translatable (issue #2914).
  • Updated translations: Czech, French, Galician, German, Japanese, Polish, Scottish Gaelic, Slovak, Spanish

Multiplayer

  • Fixed regression causing a crash-to-desktop when trying to log into the server using a registered and active account without specifying a password.
  • Fixed an infinite loading screen if the server shut down or restarted mid-login.
  • Fixed an infinite loading screen when attempting to login with an unregistered nickname followed by a registered one.
  • Dark Forecast: Fixed possible Lua error when the weather changes.

User Interface

  • Implemented MP chat message history saving (issue #1194, issue #2802).
  • Fixed context menus not dismissing on right click.

Miscellaneous and bug fixes

  • Fixed an AI assertion when a unit with one disabled attack attacked a unit with no attacks or a single disabled attack.

Version 1.13.14

Security fixes

  • Fixed an issue allowing MP lobby and whisper message origins to be spoofed by clients.

Campaigns

  • The Hammer of Thursagan
    • S12 Fixed enemies from ai6 (south-east lich) going to the book (spider) room
    • S12 Fixed north treasure chest disappearing
  • The Rise of Wesnoth
    • New set of story art.

Help browser

  • Unit descriptions use the new multiplication sign format for attack lists now (issue #2873).

Language and i18n

  • Updated translations: Chinese (Simplified), Czech, French, Galician, Italian, Polish

Lua API

  • Fix wesnoth.show_popup_dialog and wesnoth.show_message_box not accepting translatable strings

Multiplayer

  • Added team color to a few background units missing in Aethermaw.

User Interface

  • Swapped the position and formatting of game names and titles in the MP lobby.
  • Made Faction Select button's purpose more clear in MP Staging.
  • Added a convenient button in Load Game to open your saves folder.

Miscellaneous and bug fixes

  • Removed the Font Scaling preference. It was too buggy (issues #2792 and #1624).
  • Fixed some hotkeys triggering multiple commands on GNU/Linux (bug #1736).
  • Fixed [modify_side] share_vision=yes not doing anything (bug #2850).
  • Fixed regression where unit filters in [disable] weapon specials would not match the attacking unit.
  • Fixed images with no alpha channel rendering incorrectly.
  • Fixed unit selection not persisting between uses of Create Unit.
  • Fixed assertion when undoing actions in a synced context.
  • [filter_wml] no longer accepts [and] and [or] in addition to [not] since the implementation was non-functional.
  • Fixed some MP passwords being saved incorrectly (issue #2745)
  • Fixed AI not recruiting in some circumstances when there are only cheap units on the recall list.
  • Fixed sometimes being unable to join MP games with non-required eras.
  • Fixed locations not being added to the palette when loading a map (#1023)

Version 1.13.13

Campaigns

  • Eastern Invasion
    • Fixed some Lua errors in S05.
  • The Hammer of Thursagan
    • Fixed a misplaced door image in S12.
  • Under the Burning Suns
    • Changed Sun Singer movetype from float to foot.
    • Added some Quenoth elf unit animations.
    • Hide technical terrains in the Help browser (Human Ship, Lava overlay).

Language and i18n

  • Fixed many cases of interpolated strings in the engine possibly having their translations retrieved from the wrong textdomain and falling back to the English original if that failed (PR #2711, bug #2709, bug #2732).
  • Fixed parts of the MP game setup UI having their translations ignored by the game (bug #2709).
  • Fixed certain parts of the UI displaying unit stats and trait effects having incomplete translations (bug #2732).
  • Fixed "Level" label in unit descriptions in the help being untranslatable (bug #2732)
  • Fixed "Search" placeholder text in dialog item filters not being translatable (bug #2709, bug #2732).
  • Fixed "Time of Day Schedule" heading for the index for the ToD Schedule top-level help section, "Lawful Bonus", "Schedule" (back link to index) and an error message not being translatable.
  • Updated translations: British English, Chinese (Simplified), Czech, French, Scottish Gaelic, Spanish, Ukrainian

Multiplayer

  • A New Land: Fixed the scenario being broken.
  • Dark Forecast: Fixed possible Lua error when attempting to spawn units.

Miscellaneous and bug fixes

  • Fixed minimap buttons not doing anything (bug #2681)
  • Fixed events with an id but no name being rejected
  • Fixed assertion when using [inspect]
  • Fixed inability to deselect modifications in single-player
  • Fixed infinite loading screen when logging in with an invalid name
  • Improved UX in multiplayer when synced debug commands are used during a game.
  • Updated bundled Oldania font to version 1.007 (from 1.006).
  • Added bold and italic Oldania font variants.
  • Updated bundled DejaVu Sans fonts to version 2.37 (from 2.35).
  • Fixed [chat] not working during [delay] or animations.
  • Removed the Password Reminder option from the Login screen.
  • Removed (optional) requirement of libpng from SCons and CMake and the associated options as Wesnoth now uses SDL_image to write PNG files.
  • Fixed assertion when saving game events mid-event.

Version 1.13.12

Security fixes

  • Disallowed access to blacklisted file paths such as hidden files and directories.

Add-ons client

  • Addon upload progress bar now also works on Windows (bug #1439).
  • Fixed inability to cancel addon upload (bug #2591).

Add-ons server

  • Added support for adding free-form comma-separated tags to add-ons in their publishing info (bug #2565).
  • Added support for overriding existing add-on attributes using the control FIFO.

Campaigns

  • Northern Rebirth:
    • Fixed S06a Rakshas displaying incorrect portrait (issue #2569)
    • Fixed S12a invalid side error (issue #2569)
    • Fixed S13a incorrect leader when Eryssa is alive (issue #2569)
    • Fix Krash being brought back to life if he is dead
    • Appearance improvements for S04a 06a, 07a, 09a, 10a, 11a, 12a, 13a
    • Fix gold storing in S07a for S13a if retrieved
    • S04a, 05a, & S13a Make enemy units loyal so gold & events work properly

Graphics

  • Updated default Time of Day schedule images.
  • New Heavy Infantryman attack animation by Zoomo.
  • New Elvish Sylph baseframe by Jetrel.

Language and i18n

  • Updated translations: British English, Czech, Spanish

Lua API

  • Add side_name to side proxy
  • Added wesnoth.custom_synced_commands table where you can register custom synced commands.
  • Add wesnoth.invoke_synced_command
  • Removed ai.synced_command() - replaced with the above two
  • wesnoth.end_turn() now allows to specify the next side
  • The new wml module is now considered mostly final. It has new remove_child and remove_children functions.
  • New wesnoth.persistent_tags table for more convenient custom save data (intended to replace game_events.on_load/save)

User Interface

  • Improved outro screen.
  • Fixed a few cases of data not displaying in the MP Join Game screen.
  • Fixed required addon names not displaying properly when joining an MP game.
  • The Toggle Fullscreen hotkey now works everywhere.

WML engine

  • Fixed units shown with [move_units_fake] disappearing between steps (bug #1516).
  • [modify_side] now supports side_name
  • [set_menu_item] no longer fires repeatedly if the player holds the hotkey (bug #1711). If you were relying on repeated firing, add repeat_on_hold=yes to [default_hotkey].
  • [set_variable] now supports prefix and suffix operations for string concatenation.
  • [effect] apply_to=attack now supports set_range
  • [cancel_action] now works in attack-related events.
  • [unit_type] upkeep= now works again. It was inadvertently broken during the 1.13 development cycle.
  • [filter_wml] now accepts [and] and [or] in addition to [not].
  • Added bar_offset_x/y in [unit_type].
  • The MP setup code no longer generates [side]s if the scenario has at least one side defined.

Unit changes and balancing

  • Decreased cold resistance of Dune Burner line from 0% to -20%
  • Decreased cold resistance of Dune Soldier line from 0% to -10%
  • Add possibility for 'fearless' trait in Dune Soldier line
  • Increased pierce resistance of Dune Rover line from 0% to 10%
  • Increased impact resistance of Dune Piercer from 0% to 10%
  • Decreased Dune Piercer's XP to next level from 48 to 42
  • Increased Dune Riders's XP to next level from 39 to 42
  • Change mountain stats of Dune Marauder from impassable to 4 MP, 60% def
  • Increased cold resistance of Dune Marauder from -20% to 0%
  • Increased blade resistance of Dune Raider from 10% to 20%
  • Decreased hills defense of Dune Raider from 60% to 50%

Miscellaneous and bug fixes

  • Fixed standing animation toggle not taking immediate effect (bug #1653).
  • Fixed error when de-assigning village with [capture_village].
  • Enabled the use of Open Type Font (.otf) fonts.
  • Fresh installs of the game will now open in fullscreen by default.
  • New game theme music by Mattias Westlund.
  • The unit advancement prompt is no longer shown for droided sides.
  • Fixed custom game titles being lost when reloading MP games.
  • The copy-to-clipboard function on the Lua console now produces plain text without Pango markup or entities for special characters (<, > and &) (bug #2434).
  • 'Turn Changed' desktop notifications in MP will now only display when human-controlled sides take control.
  • Fixed regression in 1.13.11 where completed events could fire again when reloading a save.
  • Fixed PNG images with an embedded palette displaying incorrectly.
  • It's now possible to save screenshots as JPEG (by changing the file extension before saving).
  • Fixed no_leader having no effect
  • Fixed units randomly being unable to move over merged terrains.

Music and sound effects

  • Updated a few UI sounds.

Version 1.13.11

Add-ons client

  • Added an order dropdown that allows you to sort add-ons by the time of latest update or original upload (issue #1747)
  • Players will now be prompted to update outdated dependencies alongside downloading missing ones when installing an add-on.

Add-ons server

  • Empty passphrases from malfunctioning clients that do not provide or generate a passphrase otherwise are now rejected instead of treated as valid.

Campaigns

  • The Cutscene_Minimal theme is now used in all dialog-only scenarios that have linger=no in [end_level].
  • An Orcish Incursion:
    • New story art.
  • A Tale of Two Brothers:
    • Added a full set of hints on easy difficulty.
  • Delfador's Memoirs:
    • Iliah-Malal can now be killed by either undead or Delfador in S19
    • S19 has been rebalanced to increase difficulty and allow player & enemy to field more units.
  • Descent into Darkness:
    • 'Endless Night' now has accurate & improved scenario objectives. It also has received improvements in dialog, map appearance, and difficulty.
    • S08/S09 A Small Favor 2/3 - Fixed bug preventing door operation/usage.
    • Fixed and improved appearance and handling of the wose.
    • Other minor fixes and improvements.

Packaging

  • Renamed the target and binary for the Boost unit tests from test to boost_unit_tests. This quells warnings from CMake about reserved target names, and reduces confusion about which test is intended: the wesnoth executable or the standard shell command.
  • The CMake build system now uses standard Kitware-supported variables from the GNUInstallDirs module. Distributions might have to change the defaults to suit their FHS needs.
  • The previous addition of GNUInstallDirs necessitates a bumping of the CMake minimum requirements, which is now at 2.8.5. Most distributions already use a CMake version above 3.0, so this would only affect users of vintage CMake versions.
  • higher resolutions of the application icon have been added and are now stored in the hicolor icon theme's directory

Language and i18n

  • Updated translations: British English, Chinese (Simplified), Czech, Italian, Spanish

Lua API

  • New wesnoth.unit_types[] getters:
    • advances_to
    • advances_from
    • profile
    • small_profile
  • The wml module now offers another new way of accessing WML variables: wml.variables is a simple wrapper around wml.get|set_variable.
  • unit.id is now a modifiable field for off-map (Lua-only) units.
  • Allow moving on-map units by setting unit.x and unit.y fields, or with unit.loc = {x, y} or unit.loc = {x = x, y = y}
  • Added side.chose_random getter.
  • Lua GUI2 API: added support for slider callbacks via wesnoth.set_dialog_callback.

Multiplayer

  • Dark Forecast: Fixed broken faction and leader selection.
  • Rename the Khalifate to Dunefolk. This includes renaming all the faction's units.

Performance

  • GUI2 windows no longer redraw everything 50 times per second. This reduces CPU usage in fullscreen windows such as MP lobby by about 85 %.
  • Miscellaneous low-level optimizations in game rendering code, improving performance ingame by up to 50 %.

Units

  • Changed resistances and hitpoints for Tentacle of the Deep.

User Interface

  • Removed broken Unit Box and Widescreen themes.
  • Fixed a bug that partially prevented movement feedback announce messages to be displayed (UI regression bug #2130, affecting 1.13.8 and 1.13.10).
  • New, greatly simplified display of games in the MP Lobby.
  • Fixed individual Join/Observe buttons acting on the wrong game in the MP Lobby.
  • Greatly improved behavior of sliders.
  • Fixed crash when modifying an existing friend entry in Preferences.
  • Fixed players being unable to start campaigns in MP mode.
  • Added confirmation prompt when clearing map labels.
  • Added show_border= key to the [main_map_border] to control whether map borders draw. Right now this is utilized in the cutscene themes.
  • If [main_map_border] background_image= is empty, the game map background will be plain black.
  • New really nice HD main menu/storyscreen background.

WFL Engine

  • A new string insert() function has been added, similar to replace().

WML Engine

  • Added a major_amla option in AMLAs to keep the XP bar teal-white rather than purple for AMLAs that behave similar to regular advancements. (for example, Quenoth Youth in UtBS or similar unit lines)
  • File paths with backslashes are no longer allowed. This ensures that a UMC author can't accidentally use them and make an add-on that breaks on GNU/Linux and macOS.
  • File paths are now case sensitive even on Windows.
  • [show_if] is now usable in the [objectives] subtag [gold_carryover].
  • Macro SCEPTRE_OF_FIRE_EFFECT damage increased to 15x4 so Sceptre is an improvement over the uncut ruby of fire (14x4) in TRoW.
  • Added [lua] as a conditional tag, with identical syntax. The code in such a tag must return a true or false value.
  • Lua errors now cause as a condition to fail instead of pass.
  • New formula= key in [set_variable] allows evaluating a WFL formula with the variable, which may be either a scalar or a container.
  • A missing [event] name= key will now raise a WML error instead of being silently ignored.
  • Units hidden with [hide_unit] will remain hidden after reloading saves.
  • Fixed regression where most SUF keys would match all units if given "" as a value.

Miscellaneous and bug fixes

  • Suggested save file names now use spaces instead of underscores.
  • Fixed crash after canceling add-on download (bug #2203)
  • Fixed ingame help showing units you haven't encountered (bug #2135)
  • Fixed the opacity IPF resetting to 0 if the value given was 100% or greater (bug #2185).
  • Fix recalls updating shroud immediately when "Delay Shroud Updates" is set (bug #2196)
  • Fixed not being able to undo previous moves after entering planning mode (bug #2303)
  • Fixed image cache being shared between campaigns.

Version 1.13.10

Add-ons client

  • A list of illegal filenames is displayed if any are found by the server when uploading.

Add-ons server

  • A list of illegal filenames is sent to the client if any are found during the upload validation process. Only clients supporting this new functionality can display the list.
  • Fix an issue where the implementation of the hashing function used for add-on passphrases was changed since 1.13.8, breaking existing hashes (bug #2068).

Campaigns

  • Delfador's Memoirs:
    • Clarified and fixed objectives in many places.
    • Improved appearance and flow of dialog in several places.
    • Some minor gameplay changes to improve the story.
    • Delfador now progresses properly from Mage Journeyman to Elder Mage.
    • Fixed some other bugs.
    • S07, A Night in the Swamp has been rebalanced on easy & hard.
    • S09, Houses of the Dead, has been rebalanced.
    • S18, The Portal of Doom, has been rebalanced.
    • Iliah-Malal is now an Ancient Lich in S18 & 19.

Language and i18n

  • Updated translations: British English

Lua API

  • Upgrade to Lua 5.3.4.

Multiplayer

  • Fixed a bug where the client would return to titlescreen on receiving a redirect message from the server, which made connecting to the official server via the "connect to official server" button impossible.

Miscellaneous and Bug Fixes

  • Updated our included Spirit Po version from 1.0.1 to 1.1.2.
  • Fix idle AI being replaced by default AI under certain circumstances on loading of mid-scenario saves (bug #1955)
  • Fix rare AI crashes in the move-to-any-target candidate action and the Fast Micro AI
  • Fix poisoner FAI to prevent flood of error messages in Legend of Wesmere (bug #1999)

Version 1.13.9

Add-ons client

  • Fix HTML injection exploit in the wesnoth_addon_manager web index generation functionality.

Campaigns

  • Reordered beginner campaigns to be friendlier to new players.
  • Delfador's Memoirs:
    • Replaced incorrect 'Defeat all enemies' objectives with more specific 'Defeat all enemy leaders'.
    • Increased difficulty, clarified objectives, & improved feel of S21 & S22.
    • Riders are now guaranteed to go for a signpost in S21 on all levels.
  • Heir to the Throne:
    • Fixed thieves in 'Siege of Elensefar' getting duplicated.
    • Fixed Void Armor not doing anything.
    • Fixed translatibility of countdown in 'Test of the Clans'.
  • Northern Rebirth:
    • Fixed backdoor lever opening the wrong location in 'The Pursuit'.
  • Secrets of the Ancients:
  • Under the Burning Suns:
    • Fixed crash in 'Out of the Frying Pan'.
    • New unit sprites: Quenoth Mystic line, Quenoth Flanker line, Flesh Golem.
    • Fixed Ethereal Shadow and Ethereal Nightgaunt having nightstalk even when they shouldn't.
    • Balance changes to the Quenoth elves:
      • Formation ability now has looser adjacency requirements.
      • Quenoth Scouts have a non-slowing sling at lvl 1 instead of bolas.
      • Adjusted stats of some units.

Graphics

  • Added portrait for Giant Rat.
  • Fixed transparency artifacts in scaled portraits and other message images (issue #1570).
  • Fixed issue with jumpy animations on faster speeds (issue #1565).
  • Added some new item and scenery images

Language and i18n

  • Updated translations: British English, Chinese (Simplified), Italian, Polish, Scottish Gaelic, Slovak, Spanish

Lua API

  • Add wesnoth.format function to substitute variables into a string.
  • Add wesnoth.format_conjunct_list and wesnoth.format_disjunct_list.
  • New global "wml" table groups together all the functions for working with WML tables, and its subtable "wml.variable" groups functions for working with WML variables. Most of these are functions previously found only in helper.lua; they no longer need a require to use.
  • Warnings for using deprecated Lua functions now only appear in debug mode.
  • wesnoth.game_config is now accessible in application and mapgen kernels, though some of its contents are missing.
  • New extra argument to wesnoth.match_location and wesnoth.get_locations allows specifying the teleport_unit.
  • Support the extra wesnoth.match_unit arguments also in wesnoth.get_units
  • Fix wesnoth.put_unit not correctly deciding whether to fire the unit placed event in some situations
  • wesnoth.debug() can now be called from map generators or plugins. It is also deprecated, however; you should use wml.tostring() instead.

Multiplayer

  • When set to remember your password, Wesnoth now encrypts it. It is still possible to obtain the password from preferences, but it's no longer as trivial as before.
  • Fixed crash when loading a replay stored on the server (Bug #1762)
  • Fixed delay or clients getting stuck when starting a mp game (Bug #1674)
  • Fix bug where leader can become unable to be killed (issue #1666)

Performance

  • Rewrote the FPS cap implementation. This greatly improves smoothness ingame.
  • Each invalidated hex is now only redrawn once, not twice. This almost halves CPU usage ingame.
  • Implemented GUI canvas caching. It speeds up multiple areas, but especially the story screen.

Terrains

 * Added ruined version of encampment terrain.
 * New stone floor terrain.
 * Gates now have new terrain codes to grant more control for map makers.
   The old codes are now deprecated (issue #1839)

Units

  • Added new lvl 0 Giant Scorpling, leveling into the Giant Scorpion.
  • Tweak some costs for lvl 3 units.

User Interface

  • Fixed loyal and aged traits missing from help (issue #1935).
  • Unit recall dialog now sorts the units by both level and required XP for their next level-up (issue #1738).
  • Enable the use of tab to switch between text fields in most dialogs.
  • Color-code modifiers in trait tooltips
  • Translation teams in credits are now listed in alphabetical order of the localized language name (rather than the English language name).
  • Allow deleting saves with the Delete key in the Load dialog.
  • Fixed team selection screen often ignoring attempts to scroll (bug #1632).
  • Input Method Editor support in most textboxes (except in-game chat)
  • Campaign dialog now uses different-coloured victory wreaths depending on the difficulty you beat the campaign on
  • Campaign dialog can now be sorted in alphabetical or chronological order
  • Fixed a number of issues with hotkeys
  • Fixed the viewport being moved when changing the zoom level
  • Fixed an occasional interface hang where only the menus work
  • Trait description tooltips now color-code modifiers
  • Fix about window not showing Mac notifications as available
  • Add descriptive tooltips for all text elements in the top status bar
  • The current screen position is now saved in savefiles
  • Removed emacs keybindings in text fields (Ctrl+A, Ctrl+U, Ctrl+E) Ctrl+A now selects all text in the field.
  • Fix addon manager closing when canceling an operation
  • Addons can now be filtered to show only publishable addons

WFL Engine

  • Add owner key to terrain space callable, for villages
  • Location formulas in [tunnel] now have a teleport_unit variable
  • Fix a crash when attempting to call a non-existent function
  • The following previously FormulaAI-exclusive functions are now also available in filter formulas (SUF, SLF, SSF, SWF): adjacent_locs, location_in_radius, get_unit_type, unit_at, defense_on, chance_to_hit, movement_cost
  • New builtin functions for manipulating locations (available to all formulas): adjacent_locs, are_adjacent, relative_dir, direction_from, rotate_loc_around
  • New enemy_of function checks if its second argument is an enemy of the first Arguments can be side or unit objects, or integer side indices (1..n)

WML Engine

  • If ai_algorithm is used in [modify_side][ai], it now replaces the whole AI with the contents of [modify_side][ai], instead of appending these parameters.
  • New [credits_group] tag can be used by non-campaign addons to group several [about] tags under a single header. This is a toplevel tag, not a subtag of [era] or [modification].
  • An empty id key in SUF no longer matches all units; instead, it matches none.
  • Fix [primary_attack] and [secondary_attack] in [kill]
  • Fix [kill] not affecting recall list units
  • Fix [scroll] with omitted x or y
  • Fix [story] not showing if all parts are conditional
  • Fix some hotkeys not working (issues #1737 and #1769)
  • New vision_cost and jamming_cost keys in SUF
  • Integer SUF keys (eg level) now accept a list of ranges
  • Fix $other_unit SUF variable being unavailable in nested [and] [or] [not]
  • Unit ability values can now be specified with WFL
  • The {ABILITY_TELEPORT} macro no longer uses internal variable substitution, meaning that it can be used in an event without specifying delayed_variable_substitution=yes. (This also applies to {ABILITY_BACKSTAB} and {ABILITY_LEADERSHIP}.)
  • Add fire_event key to [unit] which determines whether to fire a unit placed event.
  • [resolution] window_width/height now specifies the minimum window size for that resolution to be chosen
  • formula code is now supported in abilities and weapon specials (fr #1436)
  • The allow_new_game= in [scenario] now defaults to false (it still defaults to true in [multiplayer])
  • Add [cancel_action] (bug #1427)
  • Allowed TerrainGraphicsWML random_start= to optionally take a positive integer to limit the range of the random shift of the animation start time
  • new attributes mp_village_gold, mp_village_support, mp_shroud, mp_fog in [multiplayer] that are used as default values for the corresponding attributes in [side]

Miscellaneous and Bug Fixes

  • Add --report/-R command line switch for printing the same report from the Game Version dialog's clipboard function to stdout.
  • Fixed programmatically killed unit flashing after its death animation
  • On GNU/Linux the game no longer minimizes when it loses focus in fullscreen mode (bug #1606)
  • Fixed whiteboard crash on delete action with multiple moves (bug #1842)
  • Fix units being unable to step on hexes with too high movecosts (bug #1473)
  • Improved and more detailed FPS display
  • Fix minimap being sometimes black in mp create (bug #1484)
  • Optimized unit filters
  • Fixed bug #1837 empty tags missing in [store_unit]
  • Fixed preferences not being saved if they weren't in the currently selected tab when the settings dialog was closed.

Version 1.13.8

Campaigns

  • Son of the Black-Eye:
    • Balancing changes for 'Silent Forest'.
  • Under the Burning Suns:
    • New sprites for Quenoth Youth (Kaleh and Nym) and Human Commander.
    • Applied a color shift to the human units in S8 and S9 to give them a more unique look.

Editor

  • Fixed a crash when placing units.
  • Restored the ability to preview different ToDs. Note this still does not work when invoked form the Custom ToD window.
  • Fixed editor sides not having the correct side number.
  • Redesigned Windows, Areas, and Sides menus.
  • The Windows menu will now display maps starting from 1 rather than 0. This is likewise reflected in the default map filename.
  • Scenario names are now displayed in more places if available.

Formula Engine

  • Fixed garbage data showing up in stack traces in the event of an error.
  • Object types can now be used in contexts where previously only a list or map was accepted - for example in the filter() function. They will be treated as a map in such cases.

Graphics

  • Fixed items not receiving ToD lighting.
  • Portraits for many Walking Corpse and Soulless race variants.
  • New animations: Dwarvish Fighter idle.

Language and i18n

  • Updated translations: British English, Chinese (Simplified), Lithuanian, Slovak, Spanish

Lua Engine

  • Add wesnoth.log_replay which exposes a little-used functionality of injecting arbitrary logging data into a saved game.
  • Small change to animator API - facing parameter replaced with target and required to be a space adjacent to the unit.
  • New modifiable theme attribute in wesnoth.game_config
  • New wesnoth.zoom() function allows changing the zoom level
  • The wesnoth.scroll function scrolls the screen by an offset, similar to [scroll]. For example, wesnoth.scroll(5, -2)
  • New is_local attribute in side proxy table allows you to detect whether or not the side is controlled by a network player. Note that use of this has the potential for OOS errors.
  • New wesnoth.music_list table which allows controlling the music playlist:
    • wesnoth.music_list[1] etc returns mutable information about a specific track on the playlist
    • #wesnoth.music_list counts the number of tracks on the playlist
    • wesnoth.music_list.current returns mutable information about the currently-playing track
    • wesnoth.music_list.current_i returns the index of the current track on the list. It is writable, allowing you to switch to any track on the list. This respects fade values.
    • wesnoth.music_list.all returns a copy of the playlist that can be stored in a variable.
    • wesnoth.music_list.play plays a specific track (as [music]play_once=yes)
    • wesnoth.music_list.add appends a track to the playlist (as [music]append=yes)
    • wesnoth.music_list.clear clears the current playlist
    • wesnoth.music_list.next fades out the current track and moves to a new track on the playlist
    • wesnoth.music_list.force_refresh forces any pending playlist changes to be immediately applied
    • wesnoth.music_list.volume attribute gets/sets the current music volume, as [volume]music=
    • Each track has modifiable shuffle, once, ms_before, ms_after attributes and read-only append, immediate, name, title attributes. They are also comparable with == or ~=
  • wesnoth.set_music is now deprecated, in favour of the above new API
  • New wesnoth.sound_volume function gets/sets the current sound volume, as [volume]sound=
  • New wesnoth.show_story function launches the storyscreen viewer
  • wesnoth.dofile now forwards any excess arguments to the file in the "..." argument
  • wesnoth.require can now load all modules in a directory and accepts some shortened paths, for example omitting the ".lua" file extension and searching in the current directory.
  • When you require a package that has no return value, you now get a table that errors on any access to it, rather than nil.
  • New wesnoth.create_weapon function to make a weapon that's not attached to a unit (which could be useful for animations)
  • New wesnoth.show_message function shows a simple alert dialog, possibly with a choice
  • New wesnoth.alert and wesnoth.confirm functions - simple shortcuts for the above.
  • Functions for working with hex locations have been added under wesnoth.map In particular, helper.distance_between is deprecated in favour of wesnoth.map.distance_between
  • The following existing functions now also work in plugins and map generators: wesnoth.log, wesnoth.get_time_stamp, wesnoth.get_image_size
  • Several error messages now point more accurately to the actual location of the error.
  • wesnoth.simulate_combat output has additional keys:
    • untouched (in first two return values) indicates whether the unit took any damage
    • number (in second two return values) contains the Lua index of the attack, as opposed to attack_num which contains the WML index.
    • weapon (in second two return values) contains the actual weapon userdata
  • New methods in location_set: of_triples, to_triples, random
  • New animations key in Lua unit proxy returns a list of defined flags for animation
  • New functional.lua file implements a number of higher-order functions from WFL
  • The length operator now works on translatable strings, returning the length of the translation.
  • wesnoth.set_side_variable and unit.variables can now clear variables
  • helper.get_variable_array and helper.set_variable_array now work on units and sides (pass a unit, side, or side number as an extra parameter) Note: helper.get_variable_proxy_array does not work on units and sides
  • helper.rand now has a second parameter that defaults to wesnoth.random
  • Add wesnoth.game_config.victory_music and wesnoth.game_config.defeat_music setters
  • Add wesnoth.game_config.scenario_id getter
  • wesnoth.set_next_scenario() was replaced with wesnoth.game_config.next_scenario setter/getter
  • wesnoth.set_dialog_value can now (un-) fold GUI2 tree view nodes

Multiplayer

  • Fixed statistics being lost when reloading an MP game.

Performance

  • Greatly speeded up switching between add-ons in the add-on manager (bug #25523)

User Interface

  • Updated Attack Predictions dialog to GUI2.
  • Updated Story screen to GUI2.
  • Double-clicking an add-on now installs, updates, uninstalls or publishes it depending on the situation.
  • Fixed file path being truncated on the wrong side in the File Browser.
  • Improved Hotkey category sorting interface in Preferences.
  • Improved Addon Manager and MP Staging interfaces at low resolutions.
  • Fixed bug that allows you to use the minimap to bypass view locking
  • You can now change the theme (in preferences) while a game is in progress.
  • Fixed units moving after in game help exit. (#24644)
  • Fixed a bug that caused rapid announce messages to overlap each other. (bug #21634)
  • Fix buttons disappearing while menus are open.
  • Fix map labels disappearing when a dialog is open.
  • Improve tooltip placement.
  • Move recruit/recall to top of context menu
  • Add a hotkey to launch test scenarios from the titlescreen
  • Added a Cutscene and Minimal Cutscene theme for UMC authors to use.
  • Improve layout of MP Create at low resolutions.
  • Game Load screen now lists the gold and total number of units for each side.
  • Textboxes now have a blinking cursor when focused.
  • multi pages can now contain different types of pages

WML Engine

  • Add base_income key to [store_side]
  • Fix issues with alpha animations on hidden units (#14503)
  • Extensions to GUI2 Canvas ([drawing] tag in dialogs):
    • New [round_rectangle] shape - a rectangle plus corner_radius
    • [circle] shape can now be drawn filled; color key is now border_color
    • [image] has new resize_mode=tile_center
    • Canvas colors can now be expressed as formulas. The formula must return the color as a list of its components, eg "([r, g, b, a])"
  • Empty tags are no longer written to the configs of [unit]s and [side]s.
  • New [change_theme] tag to change the theme mid-scenario
  • New [zoom] tag allows changing the zoom level from an event
  • [kill]animate=yes now plays victory animations if applicable
  • [kill] now supports [primary_attack] and [secondary_attack] for the animation
  • Fix [volume] not accepting 100% as the new volume.
  • New concat_to_* keys in unit_type inheritance allow amending keys
  • Accept [story] as ActionWML in events
  • Added a ~NO_TOD_SHIFT() ImagePathFunction which can be used on terrain and item images to prevent them from being affected by ToD lighting.
  • [unit]placement=name is now [unit]location_id=name and also honours the new overwrite and passable keys, deprecating placement=map_overwrite etc.
  • New zoom_levels key in [game_config] defines the allowed zoom levels.
  • The default color list is now defined via a default key in [color_range], rather than the default_color_list key in [game_config][colors].
  • Standard Unit Filter has new ability_type_active and trait keys
  • Standard Weapon Filter has new special_active key
  • [animate_unit] now raises an error if the flag key is missing
  • Fix [set_variable][join] not working with translatable strings
  • [sound_source] now starts playing the sound immediately
  • New voice key in [message] and [story][part]
  • [objectives] now supports delayed_variable_substitution=yes and also delayed substitution with $|variable syntax.
  • Items in [options] now support container variables again.

Miscellaneous and bug fixes

  • Fixed base animation showing on walking corpse & soulless bats (bug #25673)

Version 1.13.7

AI

  • Fix a performance regression in complex combat situations such as the "Oath of Allegiance" UMC campaign.
  • Fix some Micro AIs and AI helper functions not working correctly for AI sides under shroud
  • New function ai_helper.find_path_with_shroud()

Campaigns

  • Eastern Invasion:
    • In 'Weldyn Besieged', redesigned the way in which revealing the identities of the liches works.
  • Descent Into Darkness:
    • Fixed certain units not having the 'guardian' special in 'Descent into Darkness'.
  • Heir to the Throne:
    • Fixed bug allowing the wrong person to receive the Sceptre of Fire.
    • Fixed inconsistencies in Li'sar's sprites and animations when she has the scepter.
    • New death animation for Asheviere.
  • Secrets of the Ancients:
    • New campaign added to mainline (Intermediate level, 21 scenarios).
  • The Hammer of Thursagan:
    • New sprites for Dwarvish Witness line.
  • Under the Burning Suns:
    • Fixed difficulty levels with the original units not working.
    • New sprites and animations for Spider Lich.
    • Various balancing changes, bug fixes and improvements to the new units.
      • Major changes:
        • Kaleh and Nym movement points increased from 5 to 6.
        • Moon Singer branch removed.
        • Added winged lvl4 advancement for Quenoth Druid.
        • Support ability now only lowers adjacent upkeep costs by 1.

Graphics

  • New or improved sprites: Royal Warrior, Walking Corpse line wolf variation.
  • Improved terrain graphics: lava, volcano, lightbeam.
  • Improved the fake map border terrain so that it now connects with the real map borders and can better be used to change the apparent shape of the map.
  • Smoother fade transitions between differently colored time areas.
  • Adjacent castles of different types now have fewer glitches between them.
  • Fixed glitches between various mountain tiles (introduced in 1.13.3).
  • Fixed units getting submerged on some bridge types when placed over water.
  • Updated Mermaid Initiate portrait.

Language and i18n

  • Updated translations: British English, Czech, German, Portuguese (Brazil), Scottish Gaelic

Lua API

  • New wesnoth.set_side_id function can change flag, color, or both; it automatically updates cached flag info for you (but you may still need to redraw to see it).
  • The wesnoth.place_shroud and wesnoth.clear_shroud functions can alter shroud data for a single side. They accept a list of locations, a shroud data string, or the special value "all".
  • New wesnoth.is_fogged and wesnoth.is_shrouded calls test the visibility level of a hex for a particular side.
  • New wesnoth.create_animator call produces an object that can be used to run animations for a group of units
  • New Lua API functions for altering AI:
    • wesnoth.switch_ai replaces the entire AI with a definition from a file
    • wesnoth.append_ai appends AI parameters to the configuration; supports goals, stages, and simple aspects. (Aspect tags are not fully parsed; only the id and facet subtags are used.)
    • wesnoth.add_ai_component, delete_ai_component, change_ai_component These do the work of the [modify_ai] tag for a single side.
  • Side proxy changes:
    • flag and flag_icon are never an empty string
    • New mutable keys: suppress_end_turn_confirmation, share_vision
    • New read-only keys: share_maps, share_view num_units, num_villages, total_upkeep, expenses, net_income
    • Existing keys made mutable: shroud, fog, flag, flag_icon
  • wesnoth.scroll_to_tile now accepts a third boolean argument - if true, the scroll is skipped when the tile is already visible onscreen.
  • The config accessors in the helper module now give a sensible error message if something other than a config is passed as the first argument.
  • wesnoth.deselect_hex no longer deselects units; it only unhighlights the hex.
  • wesnoth.select_unit with no argument (or nil argument) now deselects any unit.
  • Fix lua side:matches always iterating over all units on the map.

Multiplayer

  • New maps: 2p Clearing Gushes, 2p Hellhole, 2p Ruined Passage, 2p Ruphus Isle, 2p Swamp of Dread, 2p The Walls of Pyrennis, 2p Tombs of Kesorak, 4p Bath of Glory, 4p Geothermal.
  • Updated maps: Fallenstar Lake.

Units

  • Several changes to names of attacks:
    • Shock Trooper, Iron Mauler, Mage of Light: maces and morning stars changed to flails.
    • Arif, Ghazi, Khalid, Shuja: long sword changed to sword.
    • Mighwar, Monawish: long sword changed to longsword.
  • Updated unit descriptions: Orcish Grunt line, Merman Fighter line, Sergeant, Lieutenant, General, Peasant, Royal Warrior, Ancient Lich, Dwarvish Steelclad.
  • Changed (mainly reduced) recruit costs of many high-level units:
    • Dwarvish Lord, Direwolf Rider, Troll Warior, Banebow, Draug.
    • Elvish Avenger, Champion, Hero, High Lord, Marksman, Marshall, Ranger, Sharpshooter.
    • Mage of Light, Fugitive, Huntsman, Ranger.
    • Batal, Hadaf, Mighwar, Mufariq, Rasikh, Shuja, Tineen.

User Interface

  • List boxes now keep the selected item visible when you change the sorting option.
  • The Addon Manager has a brand new interface.
  • Modification selection is now always available when selecting a SP campaign.
  • Scrolling the Editor palette no longer also scrolls the map.
  • Removed the old GUI1 MP screens.
  • Ensured dialogs with unit preview panes start with some extra space.
  • Fixed an issue where certain long labels would cause scrollbars to appear.
  • Greatly reduced the number of zoom levels available.
  • Experimental change: removed scrollbar up/down buttons.
  • Converted Hotkey Bind popup to GUI2.
  • Fixed TC color in Faction Select sometimes not matching the side's selection.
  • Ensured sides are always ordered by index in MP Staging.

Wesnoth Formula Engine

  • New str_upper and str_lower functions for case transformations

WML Engine

  • Update [store_side] to store everything in corresponding wesnoth.sides[*].__cfg and additional keys: num_units, num_villages, total_upkeep, expenses, net_income
  • Removed LOW_MEM option when building.
  • Add color= attribute to [floating_text]
  • Add ~CHAN() IPF that allows altering images according to formulas It takes up to 4 WFL formulas, one for each channel (red, green, blue, alpha); each works the same as the ~ADJUST_ALPHA() formula.
  • New ability_type key in standard unit filters matches if the unit has any ability of the specified type (tag name).
  • Terrain flags "_border" and "_board" are now automatically set for every tile, indicating whether it is on the map border or not.
  • SUF type_tree renamed to type_adv_tree for consistency with [hide_help]
  • [message]s no longer trigger a scroll if the unit is onscreen.
  • Removed the ~DARKEN() and ~BRIGHTEN() IPFs.
  • {SOUND_POISON} and {SOUND_SLOW} have been deprecated and replaced with empty macros.
  • [tunnel] now accepts delayed_variable_substitution=yes/no.
  • [on_redo] is now deprecated and does nothing if used

Miscellaneous and bug fixes

  • Fixed severe lag/freeze on slow PCs (bug #25356)
  • Updated wmlscope to handle the square braces syntax in file paths
  • Fixed an issue preventing quick replay when joining multiplayer matches
  • Resolved crash on Help when font scaling set to 115% or greater (bug #25292)
  • Resolved crash when viewing Help in CJK languages (bug #253334)
  • Fixed [campaign][option] tags not being properly considered.
  • Fixed an issue where team names could get corrupted in SP.
  • Zoom levels no longer get reset between loading games.
  • Do not load the Markov name generator if a CFG generator could be loaded.
  • Exit "quick replay" mode in MP games once the game is caught up.

Version 1.13.6

AI

  • Added new high_xp_attack candidate action to default AI. This CA performs attacks on enemy units so close to leveling that the default AI's combat CA would not attack them.
  • New Micro AI: Assassin Squad AI
  • Fix bug #23720, AI units with max_moves=0 do not attack.
  • Fix bug #22179: [disable] weapon special is ignored by AI. A second instance of the AI also ignoring this special under different circumstances has also been fixed.
  • Fix bug of Experimental AI recruiting sometimes failing under shroud
  • Fix some mainline campaigns custom AIs not working due to syntax changes after the AI refactoring for Wesnoth 1.13.5 (e.g. bug #25123)
  • Significantly improve move times for AI sides with many guardians
  • Micro AIs, other Lua AIs and ai_helper.lua utility functions:
    • Correctly and consistently deal with invisible units
    • New ai_helper functions get_attackable_enemies, get_visible_units, is_attackable_enemy, is_incomplete_move, is_incomplete_or_empty_move, is_visible_unit and robust_move_and_attack
    • Renamed function ai_helper.to_triple to LS_to_triples for consistency with other functions
    • Some internal changes to fix rarely occurring bugs and to improve robustness and speed

Campaigns

  • Eastern Invasion:
    • Fixed broken village encounters.
    • Tweaked the balance of Scenario 2.
  • Heir to the Throne:
    • Reworked the map and added new AI behavior in 'The Princess of Wesnoth'.
  • Delfador's Memoirs:
    • S9: Resolved inability to end level even when Delfador has the Staff (bug #24951)
    • S17: Resolved Wesnoth units returning to recall list not being healed properly (bug #24952)
    • S19: Resolved undead veterans victory condition not working properly.
  • Under the Burning Suns:
    • Redesign of all desert elf units (currently optional, selectable through the difficulty menu).

Graphics

  • Improved or new terrain graphics:
    • New wooden floor variation and transitions.
    • New aquatic encampment.
    • New aquatic castles.
    • Reworked stone walls so they take up less space and improved transitions.
    • Added Wooden and Rusty Gates.
  • Improved connections between castle and wall terrains, allowing castles and keeps to be placed adjacent to walls without glitches in most cases.
  • New sprite for Tentacle of the Deep.
  • Tweaked colors for all time schedules.

Language and i18n

  • Updated translations: Finnish, Polish, Russian

Lua API

  • Upgrade to Lua 5.3.3+ Consult http://www.lua.org/ for a full change list and updated documenation.
    • bit32 functions removed
    • utf8 support added
  • Added new function wesnoth.fire_event_by_id to fire an event with a given ID.
  • Added new function wesnoth.remove_modifications, which removes applied modifications of the chosen type from a unit. The most efficient use is to remove all modifications with a specific duration value. Also callable as u:remove_modifications.
  • The built-in conditionals have_unit, have_location, and variable are now present in the wesnoth.wml_conditionals table. This means they can be directly called, extended with new features, or even overridden with custom implementations.
  • New recall_filter field in unit proxy returns the [filter_recall] config
  • New variations field in unit_type proxy returns a list of unit variations Each member is a full unit_type describing that variation. The table is iterable with pairs().
  • Lua side, unit_type, and unit attack proxies can now be compared with == with identity semantics. (Previously, each time such a proxy was obtained, it would produce a new object that did not compare equal to any others.)
  • Lua unit_type lists (wesnoth.unit_types and unit_type.variations) are now countable with the Lua length operator.
  • Lua dialog functions now support the stacked widget and the unit preview pane
  • New wesnoth.show_menu function shows a dropdown menu at the mouse location
  • Lua attack proxy has new read_only field which is true for unit_type attacks If true, attempts to change the attack will result in an error.
  • The name field in Lua attack proxy is now writable
  • The attacks field in the Lua unit proxy is now writable Specifically, attacks may be replaced, appended (by assigning a new ID or the next valid index), or removed (by setting a field to nil).
  • wesnoth.show_message_dialog supports second_portrait and second_mirror keys in its first argument, which produces a dialog with two portraits.
  • The callable userdata returned by wesnoth.textdomain can now be called with an additional two parameters (a plural string and a count) in order to support gettext plurals.
  • New matches function in team and unit attack metatables, which test if the side or weapon matches a filter.
  • helper.lua metatables are now protected from external access; getmetatable() will return a descriptive string instead of the metatable.
  • ai.aspects.attacks no longer returns a full attacks analysis. Instead it returns a table with "own" and "enemy" keys containing the valid units for attackers and targets. The function ai.get_attacks() still returns the full attack analysis.
  • Aspect fetcher functions (eg ai.get_aggression()) are now deprecated in favour of the ai.aspects table.
  • The location_set iter and stable_iter functions can now be called with no argument. In this case, they return an iterator suitable for use in a for loop.
  • New wesnoth.wml_matches_filter function takes a WML table and a WML filter and tests if the table matches the filter. The filter syntax is as with [filter_wml].

Music and sound effects

  • Added a preference to pause the music when the game loses focus.
  • Now the music fades out between scenarios.

Networking

  • Ported campaignd to use boost.asio instead of SDL_net.
  • Removed unit tests for old networking stack. This was the last part that depended on SDL_net

Performance

  • When a heuristic determines that it's probably faster, the game predicts battle outcome by simulating a few thousand fights instead of calculating exact probabilities. This method is inexact, but in very complex battles (extremely high HP, drain, slow, berserk, etc.) it's significantly faster than the default damage calculation method.

Units

  • Changed the sound for the melee attack of the Loyalist Bowman, Orcish Crossbowman and Orcish Slurbow.

User Interface

  • Trait descriptions in the help are now generated. (This makes user-defined traits show up in the help as well.)
  • Fix game map sometimes showing and buttons sometimes not rendered properly in story screen (bug #24553)
  • Improved font rendering on Windows.
  • Redesigned gamestate inspector window.
  • Recall dialog no longer shows units that no leader on the map can recall (due to the [filter_recall] not matching)
  • Weapon specials only gained through AMLAs now get a help topic
  • The "Cores" button on the title screen is now hidden if no cores other than the default are installed
  • Redesigned game dropdown/context menu appearance
  • New categories bar in hotkey preferences allows you to filter hotkeys
  • Fix issue with the title screen not redrawing when the window size or fullscreen setting changes with a dialog open over it.
  • Restored descriptions for choices in combobox-based Advanced Preferences entries (lost in 1.13.3).
  • When using the --wconsole option, the game now prints a prompt in the event of a fatal error to avoid closing the console before the error can be seen.
  • Restored GUI2 textbox selection highlight lost in version 1.13.3.
  • Added a "Draw Number of Bitmaps" option to the map editor, for terrain graphics diagnostics.
  • Ported file chooser dialog to GUI2, and redesigned it to include a bookmarks bar with predefined and user-defined shortcuts.
  • Tweaked the border/groove color scheme on textboxes and sliders to better reflect their state and mimic window and button borders.
  • The following dialogs have been converted to GUI2: Unit Recall, Unit List, Game Stats, MP Create, MP Game Lobby, Faction Select, Unit Advance.
  • Improved UI responsiveness.
  • Tab completion in the Lua console is improved. It can now handle paths containing square brackets (though it won't complete them) and will not offer keys that are not valid identifiers.

WML Engine

  • Added ignore_special_locations=yes|no, default no, to [terrain_mask] to ignore the special locations given in the mask, leaving all those on the underlying map unchanged.
  • [terrain_mask] starting locations and special locations are relative to the mask. Existing names replace any in the underlying map regardless of their location. Each name as a unique location; but a location may have any number of names. While a map/mask can give only one name per location; stacking masks allows multiple names. Names cannot be removed.
  • Added {HAS_NO_TURN_LIMIT} macro for objectives
  • New attributes for [message] with [option]
    • Added variable= to [message]: if specified, gives variable name to receive the [option] index (1..n) selected only used if any [option] appear
    • Added value= to [option]: if specified, gives value to store in variable instead of index number, only used if variable= appears in [message]
    • New second_unit, second_image, second_mirror attributes for showing two portraits on a single message.
  • New attributes for [role]:
    • search_recall_list=yes|no|only(default yes) controls where to look
    • reassign=yes|no(default yes) if no, check for a unit and do not assign to another
    • [auto_recall] sub-tag, if assigned to recall list, gives [recall] attributes (no SUF)
    • [else] sub-tag, WML to execute if no unit found for the role
  • New help_text= key for [trait] to set the description displayed in the help.
  • Added tag id= [fire_event], which allows raising events by id
  • [modify_unit] now understands [effect] tags, which it applies directly. This replaces the use of [object] with no_write=yes (which will be removed in the next release).
  • Add [object]take_only_once=yes|no (default yes) - if set to no, automatic tracking is disabled for this object (allowing it to be taken multiple times even if it has an id).
  • New [remove_object] tag which removes applied [object]s from matched units; it can filter on the entire [object] WML. The most efficient use is to remove all objects with a specific duration value.
  • Renamed [foreach] variable= to array=
  • Renamed [foreach] item_var= to variable=
  • Fixed several bugs in the name generation of the map generator
  • Fixed issues with using [endlevel] in victory/defeat events
  • The {MAGENTA_IS_THE_TEAM_COLOR} macro is no longer needed in [unit_type] It is now the default behaviour unless overridden with the flag_rgb key.
  • New key type_tree in unit filters - similar to type, but also matches any possible advancements of the specified unit types.
  • [options][combo] in [scenario], [modifications], etc has been renamed to [choice] (which is more accurate). The old name still works for now.
  • ~ADJUST_ALPHA() image path function now takes a WFL formula. It can access the following variables: x, y, width, height, red, green, blue, alpha. It no longer accepts a percentage (use ~O() for that).
  • Fixed [rule] in [terrain_mask] ignoring use_old=yes
  • Fixed filter returning invalid locations if invalid locations were given in a variable that was used with find_in=
  • Moves cave map generator to lua. scenario_generation=cave is now deprecated and will be removed soon. The Lua version has feature parity with the old one, but the syntax is a little different. It supports both map_generation and scenario_generation.
  • Tunnel functionality was expanded and the default behavior was altered in order to make moves through tunnels consistent with all other moves:
    • Vison through tunnels is now possible and enabled by default. It can be turned off by setting allow_vision=no in the [tunnel] tag.
    • Own and allied units on tunnel exits do not block the tunnel any more. The blocking behavior can be reenabled by setting pass_allied_units=no in the [tunnel] tag.
  • Added text_alignment= key to [story][part] to specify horizonal alignment of text.
  • [set_variable] now supports abs= (absolute value), power= (raise to power) and root= (extracts root, 'square' is the only value currently supported) keys
  • Individual [terrain_graphics] rotations can now be skipped entirely by using "skip" in the rotations= list.
  • WML macros can now include optional arguments with default values that the caller can override.

Miscellaneous and bug fixes

  • A new way to make units invulnerable for debugging: select the unit and type ";unit invulnerable=yes". This method operates by decreasing the opponent's hit chance to zero: as a result, it doesn't slow down damage prediction unlike the "increase HP to ridiculous levels" method.
  • The ;choose_level command now works in the tutorial and in [test] scenarios
  • Fixed a stray ; character appearing pre-entered in the command console.
  • Fixed bug in wesnothd that was causing server crashes if game with multiple network and local players was ran.
  • Added a tab to run the wmlxgettext tool to GUI.pyw
  • Fixed problem with Spectre's hitpoint bar positioning.
  • Fixed crash when unit with planned actions is killed before those actions are completed (bug #20071)
  • Show correct number of attacks in case of swarm weapon special (bug #24978)
  • Fixed bug that icons of buttons under the minimap disappeared when the player opened and closed a menu.
  • Correct unit recall count in statistics when undoing a unit recall (bug #25060)
  • Add tip to recall units instead of recruiting them if costs exceed 20 gold (recruitment costs)
  • Resolve sides in map editor not having a proper side number and subsequently causing a crash upon editing (bug #25093)
  • Avoid rare cases of mini-map producing a divide-by-zero error (bug #25155)
  • [filter_vision]: fix bug of filter not matching own/allied hidden units
  • Prevent crash on quitting scenario with planned recruits present (bugs #24022/25193)

Version 1.13.5

Campaigns

  • An Orcish Incursion:
    • Linaera can recruit Mage, and cannot recruit Elves
  • Heir to the Throne:
    • Add journey tracks for 19c/20b path.
    • New sprites for Li'sar.
    • S10: Clarify objectives and change egg image on capture.
    • S19c: Removed the undead and the swamps.
  • Tutorial
    • Improve translatability for languages with gender-dependent pronouns
    • S1: Fix unit being deselected after the select message
    • S2: Highlight (outline) talked-about locations
  • Legend of Wesmere
    • S3: fix bug which silently disabled Urudin retreat AI

Graphics

  • Updated generic portrait of Mermaid Initiate.
  • Added generic portrait for Giant Spider.

Language and i18n

  • Updated translations: British English, Galician, German, Italian, Japanese, Polish, Portuguese, RACV, Russian, Scottish Gaelic, Spanish

Networking

  • Reworked the multiplayer server to use asio functions for networking operations instead of SDL_net, thus it no longer depends on SDL_net and SDL.
  • The client now uses boost::asio for communication with wesnothd too.

Removed support for SDL 1.2. SDL 2 is now the only supported version.

Terrains

  • Changed terrain code of Desert Mountains from Mdy to Mdd.

Editor

  • Allow to set special locations in the editor which can then be read by wml.

User Interface

  • Fix flickering caused by tooltips, closing windows and tabbing into the game (bug #24532)
  • Various design improvements to GUI2 widgets
  • New simpler GUI2 loading screen
  • New colored cursor graphics
  • Fixed Mage of Light halo appearing in the top-left corner of the screen while the mage is moving (bug #23712).
  • Fixed Observers icon appearing behind other top bar items in MP games on horizontal UI resolutions < 1024 (bug #24455).
  • Fixed ToD schedule progress indicator appearing behind other top bar items on vertical UI resolutions < 600.
  • Improved the dialog for choosing what to do when a player leaves in multiplayer.
  • The side overview now also shows allied human sides in sp even if they aren't discovered yet
  • Added an option to disable the loadingscreen animation since it caused bugs in some configurations.
  • Added a gui method to activate loggers (Preferences -> Advanced -> Logging) loggers activated in the gui print just like loggers activated in the command line (i.e. messages appear in the console)
  • The Lua console screen now has a clear button
  • Fix bug #24762: Editor actions are out of sync after resizing.
  • Increased the font size for text in buttons.
  • Changed unit help topics to use smaller images on smaller monitors.

WML engine

  • Add color= attribute to [message].
  • Add [else], search_recall_list=, auto_recall= to [role]
  • Fix some issues with [foreach]
  • Fix some issues with backstab-like weapon specials
  • Support [effect]times=
  • Add highlight=yes|no to [scroll_to], [scroll_to_unit], [message] Defaults to no in the first two cases, yes in the third If yes, the target hex is outlined.
  • New ~SCALE_INTO(w,h) IPF which preserves aspect ratio, using bilinear interpolation scaling.
  • New ~SCALE_INTO_SHARP(w,h) IPF which preserves aspect ratio, using nearest neighbor scaling.
  • Support delayed_variable_substitution= in [on_undo], [on_redo] Note that this means $unit.x and $unit.y may not reflect the unit's true location, so using [unstore_unit] on $unit may have unexpected effects. This applies to $second_unit too. The $x1, $y1, $x2, $y2 variables work fine though, so in most cases they can be used instead. Anything else in $unit or $second_unit is also fine.
  • formula= in SUF can now reference $other_unit via the formula variable "other"
  • formula= now supported in location, side, and weapon filters
  • Weapon filters now support number, parry, accuracy, and movement_used
  • New [has_attack] in standard unit filters; supercedes has_weapon= and uses full weapon filter.
  • lua_function=var.member now works in SUF; however, 'var' still needs to be a global variable.
  • Added new keys name_generator, male_name_generator and female_name_generator for the [race] tag to declare a context-free grammar to describe how names are derived
  • Modification tags in [modify_unit] now support delayed_variable_substitution (This means [advancement], [object], and [trait] tags.)
  • All looping tags now give an error if they contain no [do] tag. (They may contain multiple [do] tags, however.)
  • Add [message]image_pos=left|right, which mostly supercedes ~RIGHT()
  • For [core] authors: New keys for game logo (game_logo, game_logo_background)
  • AiWML:
    • Filters within [micro_ai] can now use $this_unit, which was previously impossible due to the config being prematurely parsed.
    • Simplified aspect syntax which works for all aspects, present and future:
      • All aspects with simple values can be specified as key=value
      • Except attacks, all aspects with complex values have a simple tag form containing only the aspect value (e.g. [avoid])
      • All aspects, simple and complex, can be specified using a tag named by the aspect, whose contents is the same as a corresponding [facet]
      • The full [aspect] and [facet] syntax also still works
    • [ai] configs no longer recognize the version= key
    • ai_algorithm key now selects a preset AI; possible values include "ai_default_rca", "experimental_ai", and "idle_ai", but custom AIs defined by eras or modifications with an [ai] tag can also be used
    • [leader_goal] now automatically sets facet ID for auto_remove (Only if using simplified syntax; in full syntax, the ID must still be specified in two places.)
    • The AI config in the gamestate inspector is now split into multiple sections according to the type of component.
    • The following deprecated components have been removed:
      • recruitment stage (name=ai_default::recruitment)
      • old recruitment candidate action (name=ai_default_rca::aspect_recruitment_phase)
      • old simple move-to-targets candidate action (name=ai_default_rca::simple_move_and_targeting_phase)
      • number_of_possible_recruits_to_force_recruit aspect
      • recruitment_ignore_bad_combat aspect
      • recruitment_ignore_bad_movement aspect
      • The recruitment aspect has been removed from the engine; however, "recruitment" is now accepted as a synonym for "recruitment_instructions". Old code should work without changes.
      • [goal]name=protect_my_unit
    • The following experimental components have been removed: (Most of these were broken or non-functional)
      • Experimental recruitment candidate action This worked, but was worse than the default recruitment.
      • Global fallback candidate action
      • Akihara recruitment candidate action
      • Fallback stage (functional but useless)
      • Strategy Formulation with RCA stage This worked, but was slow and unmaintained. If a maintainer steps up, it may be restored later.
      • Several of the development AIs available in debug mode in the multiplayer setup menu
    • The "Strong AI" has been renamed to "Default AI (RCA) with Alternate Recruiting" and is now only available in debug mode.
    • Lua components (goals, aspects, stages, and candidate actions) now support an [args] subtag, which passes any sort of WML data to the Lua code - this works similarly to [args] in a [lua] tag, though not quite identically.
    • Aspect syntax with [aspect] tag has been fully generalized so that [aspect], [facet], and [default] are all exactly the same in terms of what contents they expect. (Except that [facet] additionally takes turns= and time_of_day=.) The most useful consequences of this:
      • You can nest a [facet] inside another [facet] if the outer one has name=composite_aspect
      • You can define a [facet] with the Lua engine
    • invalidate_on_tod_change= has been implemented for aspects. It applies when the bonus resulting from time of day modifiers (excluding any illumination abilities) changes at any location on the map. Thus, it occurs on average less often than invalidate_on_turn_start and may be best combined with an explicit invalidate_on_turn_start=no.
    • Minor shorthands have been introduced in the recruitment_instructions aspect:
      • [pattern] tag is like [recruit] with pattern=yes
      • [total] tag is like [recruit] with total=yes
      • If no [recruit] tag is present, a default is added with importance=0. This means recruitment will happen even with only [limit] tags.
    • Extensions to [modify_ai]:
      • [modify_ai]action=change works on aspects, using path=aspect[id]. Useful if you need to change all the facets at once, but note that it also wipes the [default] facet.
      • The [default] facet can be referenced as facet[default_facet]. This should rarely be needed, but is there in case it is. It also makes them easily identifiable in the inspector.
      • Automatically copy over the id= with action=change, if the new component did not specify one.
      • It can add, remove, and change jobs and limits in the recruitment_instructions aspect. The path to use for this is aspect[recruitment_instructions].facet[facet_id].recruit[recruit_id]. (For a limit, replace "recruit" with "limit".) The [recruit] and [limit] tags now support id keys for this.
  • Added side_name= attribute in [side], it's now no longer possible to specify the current_player attribute in the [side] wml.
  • unit filters, specially in wesnoth.get_units now have a limit= attribute to limit the number or matched units.
  • Added new attribute "registered_users_only" to MultiplayerServerWML which indicates that only registered users should be allowed to join the game
  • wesnoth now does a stricter check for unit type ids.
  • In multiplayer, victory events now fire at the end of the scenario if at least one human player has won, this fixes OOS in mp campaigns.

Lua API

  • wesnoth.match_unit can now take a location (rather than a unit) as the optional third parameter. This will cause the filter to consider the unit to be on that location instead of its actual location. This even works for units on a recall list.
  • wesnoth.highlight_hex is no longer deprecated, but its effect is slightly different from the old one. It outlines a hex, nothing more.
  • wesnoth.select_hex is now deprecated in favour of the new wesnoth.select_unit (or u:select). The effect is almost the same (with the exception that it does not outline the hex if true is passed as the second argument), but this name change was done to emphasize that it acts on a unit, more than a location.
  • New wesnoth.set_time_of_day function which sets the current time of day, taken either as the time ID (eg "second_watch") or the index of the time in the overall schedule (eg, 1 would be dawn in the default schedule). Optional second argument takes a time area ID, to set local instead of global time.
  • New wesnoth.add_fog and wesnoth.remove_fog functions allow changing fog on the map. The [lift_fog] and [clear_fog] tags now use this.
  • New wesnoth.add_sound_source, wesnoth.remove_sound_source, and wesnoth.get_sound_source functions to allow manipulation of sound sources. The [sound_source] and [remove_sound_source] now use these.
  • New wesnoth.log function for printing log messages. The [wml_message] and [deprecated_message] tags now use this.
  • New wesnoth.name_generator function builds a name generator and returns it as a callable userdata. Both the original Markov chain generator and the new context free grammar generator are supported
  • New wesnoth.get_end_level_data() function which can be called in a victory, defeat, or scenario_end event to access (or change) how the scenario ends.
  • Fix wesnoth.erase_unit failing if the unit was on a recall list.
  • WML tables defined in Lua now accept string keys with array values (where "array" is a table whose keys are all integers). This joins the elements of the array with commas and produces a single string value. eg {x = {1,2,3}} is equivalent to {x = "1,2,3"}.
  • wesnoth.effects table can now be used to alter the behaviour of built-in effects - for example, to add a new feature to [effect]apply_to=attack. It also now supports effect descriptions, for use by the [trait] tag.
  • Additional fields in unit proxy:
    • usage, cost - self-explanatory
    • traits - list of the IDs of all traits
    • abilities - list of the IDs of all abilities
  • Additional fields in table returned by wesnoth.get_terrain_info:
    • icon, editor_image, light
  • Additional fields in unit type proxy:
    • race, id, alignment
    • attacks, which returns the same thing as unit.attacks
    • abilities, same as unit.abilities
  • Additional field in side proxy:
    • faction (read-only), faction_name (read-only)
  • LuaAI:
    • The table returned by check_*() now has a "result" field which gives a description of the action's result; similar to "status" but more descriptive.
    • Target tables now use a descriptive name for "type", instead of an integer. This applies to the elements of the table returned by ai.get_targets() and also to the elements of tables returned by Lua goals. (However, Lua goals that used integers will continue to work for now.)
    • There are some compatibility-breaking changes to Lua candidate actions - see the release notes or the wiki for full details.
    • Lua AI code can now access the AI routines through the global ai object. This object is only accessible to AI code; it does not exist in the general Lua global scope.
    • When executing Lua goals, aspects, or candidate action evaluations, the ai is in "read-only" mode - the read_only key is set to true, and functions that change the gamestate, such as ai.attack(), are missing from the table. (ai.check_*() functions are still present.)
    • The ai.aspects table provides access to every aspect known by the engine, including several that previously did not have corresponding ai.get_*() functions. You access them as ai.aspects.avoid, for example. The table is read-only and raises an error if you attempt to write to it.
    • The way to create Lua candidate actions has changed a little. Old code will require minor changes.
    • New wesnoth.micro_ais table contains the loaders for all Micro AIs. New loaders can easily be installed by add-ons. See any built-in micro AI (in ai/micro_ais/mai-defs/) for an example of how to do this.
    • The attacks aspect can now be defined as a Lua aspect. The code should return a table with keys "own" and "enemy", each of which may be either a unit filter table or a function which takes a unit as a parameter and returns true or false.
  • Added wesnoth.game_events.on_mouse_move/on_mouse_actions callbacks (fr #22635)
  • Added wesnoth.special_locations
  • [lua] tags now also support the [args] subtag outside events.
  • added lua_function= attribute in location filters
  • Added on_event.lua which is an eaiser to use wrapper for wesnoth.game_events.on_event

Multiplayer

  • Hornshark Island: simplified multiplayer faction determination
  • Added "Registered users only" checkbox to multiplayer configuration dialog which when checked, only allows registered users to join the game

Wesnoth formula engine

  • Formulas in unit filters can now access nearly all unit attributes The following attributes were renamed (old names still work, for now): leader -> canrecruit total_movement -> max_moves movement_left -> moves states -> status
  • Nearly all unit type, side, weapon, and terrain attributes available to Lua code are now also exposed to WFL. The exceptions are mainly translatable strings.
  • Unit and side WML variables are now accessible under "wml_vars". Since WML variables don't easily translate to formula variables, the special attributes __all_children, __children, and __attributes provide specialized views of the variables config as a list, string-list map, and string-value map, respectively.
  • The 'special' attribute of weapons was renamed to 'specials', and it now contains the special IDs rather than their translateable names.
  • New syntax features:
    • String interpolation syntax. Within a formula string (enclosed in 'single quotes'), the syntax [some_formula] interpolates the result of the inner formula into the string. (The simplest use case is interpolating the values of variables.)
    • String can now escape special characters: ['] single quote, [(] open square bracket, [)] close square bracket
    • New 'in' operator which tests if a list contains an item or if a map contains a key.
    • New concatenation operator a..b which works on strings and lists
    • New range operator ab which produces a list of consecutive integers This can also be used for "list slicing" - eg my_list[35] returns a new list containing elements 3 through 5 of my_list.
    • Lists can be used as an index for a list. This is "selection indexing" and returns a new list with only the elements specified by the indexing list.
    • Function definitions (using the def keyword) are now supported in all formula contexts, which means that they can be used outside FormulaAI. However, non-FormulaAI functions are currently local to the formula that declares them.
    • Maps containing string keys that are valid identifiers can now be indexed with the dot operator instead of the indexing operator.
    • Strings can now be indexed via 'string'.char[n]. Also supported are 'string'.word[n] and 'string'.item[n] (the latter splits on commas)
  • Changes to core functions:
    • head() takes an optional argument - if present, a sublist is returned.
    • abs(), max(), min() now work on decimal numbers
    • reduce() function can specify an optional initial accumulator This will be returned for an empty list instead of null.
    • substring() function can now accept a negative size parameter This counts backwards from the specified offset A size of -1 is the same as 1.
    • if() can take two arguments; returns null if the condition is false
    • tomap() will now invert the effect of tolist()
    • debug_print() now shows in chat area if debug mode is on
  • New core functions:
    • Trig functions tan, acos, asin, atan have been added. (Sin and cos existed since at least 1.9 but were undocumented until very recently.)
    • Other common math functions - root(), sqrt(), cbrt(), log(), exp()
    • hypot(x,y) function calculates sqrt(xx+yy) with minimal error
    • pi() returning the circle ratio
    • tail() - opposite of head()
    • reverse() function for strings and lists
    • zip() function - converts [[1,2,3],[4,5,6]] to [[1,4],[2,5],[3,6]]
    • take_while() function returns items from a list until the first one that fails a condition
    • find_string() locates a substring within a string
    • replace() replaces a sequence within a string
    • type() function checks the type of a formula result
    • distance_between() - this was promoted from FormulaAI to core
    • pair() function that produces a key-value pair suitable for passing to tomap() - this also means key-value pairs are now serializable (relevant in FormulaAI)
    • sgn(), trunc() and frac() functions for decimal numbers
  • Map generator engine:
    • makes now use of the new context free grammar name generator
    • ported name generation from english.cfg to [naming]
  • Bugfixes:
    • Dice operator is now synced (where possible)
    • Modulus (%) operator now works on decimal numbers
    • Exponentiation (^) operator is now right-associative
    • Fix several math operations returning a very large negative number when the operation was invalid (for example, (-2) ^ 0.5). Now they return null instead.
  • Formula debugger (accessed with the debug() function):
    • Now works again, but is skipped unless in debug mode
    • No longer explodes on formulas using less-than
    • Some better information and formatting in the execution trace
    • You can now step through "where" variable assignments
  • FormulaAI no longer starts recruiting if a formula evaluates to the string 'recruit'.
  • Deprecated:
    • The fai/faiend keywords are deprecated as part of a move to clearly define the difference between "Wesnoth Formula Language", the language, and "FormulaAI", the AI engine that uses the language. For now they still work, but any future code should use wfl/wflend instead. Use of the .fai file extension is still fine for FormulaAI code; for other formula code in a separate file, .wfl is recommended instead.

Miscellaneous and bug fixes

  • Resolve translated logo images not being used (bug #24357)
  • Ported the "hexometer" tool from Bash to Python 3
  • Recognize hotkey release events
  • Allow changing keybindings for scrolling the map.
  • Fix the move-to-targets candidate action of the default AI ignoring tunnels
  • Fix two rare bugs in the goto candidate action that resulted in goto moves by other units being skipped after a unit could not get to its goal.
  • Replace wmlxgettext tool with new python3 implementation by Nobun: https://github.com/AncientLich/wmlxgettext-unoff/
  • Debug commands that create units now do so for the currently controlled side instead of always side 1.
  • Fixed bug #24696 (Nightstalk ability not working)
  • Ported the following scripts to Python 3: TeamColorizer, about_cfg_to_wiki, campaign2wiki, terrain2wiki
  • Wesnoth now ignores unknown arguments that XCode may pass when testing.

Version 1.13.4

Language and i18n

  • Updated translations: British English, Russian

Graphics

  • Improved or new terrain graphics: Mine Walls (replaces Hewn Cave Walls).

User interface

  • Fix vertical alignment of individual attacks listed in the Attack Unit dialog.
  • Removed extra padding below unit stats in the Attack Unit dialog.

Miscellaneous and bug fixes

  • Fix non-deterministic crashes in the Attack Unit dialog resulting from invalid memory references (regression introduced in 1.13.3).
  • Fix uninitialized variable in event handling code (bug #24498).

Version 1.13.3

Greatly improved SDL 2 support. SDL 2 is now used by default build when building. This fixes the following bugs, among others:

  • Bug #18112: Color cursors cause slow mouse movement at menus
  • Bug #19666: When I resize windows during dialog I lose the menu buttons
  • Bug #20332: Cursor not mapping correctly on Retina display when in Windowed mode
  • Bug #23820: SDL 2 alpha blending issues
  • Bug #23821: Text input is broken in GUI1 under SDL 2
  • Bug #23908: SDL 2 SDL_BlitSurface causes crashes
  • Bug #23918: UI graphics garbled on OS X 10.11 El Capitan
  • Bug #23934: Resize actions are laggy
  • Bug #24138: SDL 2 crash on resize after starting a game and returning to the title screen
  • Bug #24209: Screen becomes black upon minimise and restore
  • bug #24212: SDL 2 build handled input incorrectly once window focus is lost when menus are open
  • Bug #24213: SDL 2 build leaves menu items stuck if window dimensions change while open
  • Bug #24214: SDL 2 build handles fullscreen toggle badly
  • Bug #24260: Menu and Action buttons disappear on resize
  • Bug #24261: Area under Objectives not redrawn on resize
  • Bug #24294: Doubled-up GUI1 dialogs don't redraw the secondary in SDL2
  • Bug #24477: Segfault when launching Credits

Campaigns

  • Liberty:
    • Added some animations for the Rogue Mage line.
    • Fixed Relana appearing as male.
  • Sceptre of Fire:
    • Added some animations for Dwarvish Miner.
    • Improved sprite for Dwarvish Caravan.
  • Son of the Black-Eye:
    • Added some animations for the Orcish Shamans.
  • Under the Burning Suns:
    • Updated sprites for Naga Hunter, Naga Guardian line, Crab Man.
    • Crab Man changed to Monster Crab.

Graphics

  • Improved or new terrain graphics: Stones with Sand Drifts, Igloo Village, Adobe Village.
  • Added option for toggling off water animations to Preferences -> Display.

Language and i18n

  • New translation: Asturian
  • Updated translations: British English, Galician, Russian, Swedish

Sound effects

  • Fixed various subtle timing problems with attack sounds.

Terrains

  • New terrain: Desert Mountains (Mdy), Impassable Desert Mountains (Mdy^Xm), Ruined Adobe Village (^Vdr).

User Interface

  • GUI1 comboboxes now use the thinner menu frame style.
  • Implemented a new GUI2 Attack dialog
  • Added gui2 comboboxes.
  • Removed prompt when purging the WML cache from Preferences.
  • Implemented a new GUI2 Preferences dialog
  • Implemented a new font scaling option on the Display panel.
  • Selecting an entry in the friend/ignore list panel now copies it to the input field; this makes it easier to edit friend/ignore notes.

WML engine

  • Added new event "unit placed", which triggers when (and regardless of how) a unit appears on the map.
  • Added support for color= in [unstore_unit] and [print]
  • removed network and network_ai controlles, whether a side is networked is now stored in the is_local attribute.
  • Eventnames (received in wesnoth.game_events.on_event) now have all their spaces replaced with underscores.
  • lua can now read/write the 'persistent' attribute of sides.
  • lua can now read/write the 'alignment' attribute of units.
  • Added {CURRENT_FILE} and {CURRENT_DIRECTORY} macros.
  • add support for relative dirs in wesnoth.dofile/require
  • Added name= and write_name= attributes in [item]
  • Added description_alignment= key to [campaign]
  • Fixed [put_to_recall_list] not working correctly (bug #24390)
  • Wesnoth now does a stricter check in variablenames and doesn't allow empty indexes like "a[].b" anymore.

Lua API

  • Added wesnoth.read_file
  • wesnoth.dofile/require now allow .. in relative paths.
  • unit.level and unit.upkeep can now be changed via lua unit proxies.
  • wesnoth.find_path is now available in lua map generators and allows border=yes/no parameter.

Miscellaneous and bug fixes

  • Fix the new log code on Windows to actually use Unicode-aware functions in a couple of places so Wesnoth does not quit on startup when trying to relocate the log file to a path with Unicode characters (bug #22897, definitely fixed this time).
  • Decreased high memory consumption caused by the animated water.
  • Fix bug #23108: exclude aborted attacks from statistics
  • imgcheck now runs on Python 3
  • Fix bug #15259: Secondary click uses control-click instead of command-click in OS X
  • New hi-res icon using new logo for OS X
  • Removed the "wmlmove" Python tool
  • Fixed [event] in [unit_type].
  • Fixed oos caused by mp replay turn feature.
  • Fixed oos bugs caused by plattform dependent rounding from double to int in lua.
  • Fixed custom (lua-defined) scenario tags beeing removed from [replay_start]
  • Fixed savefile bloat caused by unit variations (walking corpses)
  • Fixed preferences file bloat caused by null-command hot-keys (bug #21969)
  • Fixed clearing of default hot-keys not working (bugs #21983/#22218/#23981)
  • Fix [for] not correctly handling the case when the array length changes during iteration
  • Fix variables in [message][command] (bug #24288)

Version 1.13.2

Add-ons client

  • Warn user if attempting to upload an addon with a version lesser than or equal to a published version.

Campaigns

  • Delfador's Memoirs:
    • Added defeat condition for death of the last undead veteran in 'Showdown in the Northern Swamp' (bug #23668)
  • Eastern Invasion:
    • Fixed scenario events not working right on easy difficulty in 'Captured'.
  • The South Guard:
    • Deoran is now the grandson of the Haldiel in HttT instead.
  • Tutorial:
    • Fixed transition to second scenario.
  • Under the Burning Suns:
    • Gave Garak a new ability called Teaching (at the start of every turn, his experience points are transferred to adjacent units on the same side)

Editor

  • Add Recent Files menu with a list of recently saved or loaded maps or scenarios, up to a custom limit (by default 10) that can be set in Advanced Preferences.
  • Fixed Player Start labels not being updated with repeat map generations (bug #20036)

Graphics

  • New animated water.
  • New standing animation for the Dwarvish Runesmith
  • New generic portraits for the Troll and Troll Whelp
  • New game logo

Language and i18n

  • Updated translations: British English, French, Galician, Hungarian, Italian, Japanese, Latvian, Polish, RACV, Scottish Gaelic, Slovak, Spanish
  • Fixed crashes during start-up on Windows resulting from add-ons containing erroneous textdomain declarations (bug #23839).
  • Spelling and grammar review across all official campaigns.

Lua API

  • It is now possible to implement custom [effect]s with wesnoth.effects
  • Changed interface for the wesnoth.synchronize_choice function
  • Added support for unit.level field (read only)
  • Added support for unit.advancements field (bug #23677)
  • Added support for unit.parry and unit.accuracy fields
  • Added support for current.event_context.unit_x/y fields (bug #23507)
  • Added wesnoth.set_dialog_focus function
  • Added wesnoth.set_dialog_visible function
  • Added wesnoth.show_message_dialog function
  • Added wesnoth.show_popup_dialog function
  • Added wesnoth.deselect_hex function
  • Added wesnoth.is_skipping_messages and wesnoth.skip_messages functions
  • New parameter write_to_mods in wesnoth.add_modification
  • Added wesnoth.random function
  • helper.shuffle is now synced
  • Remove wesnoth.get_unit(underlying_id)
  • Add wesnoth.get_unit(string_id)
  • Change wesnoth.message so that it can display translatable strings
  • Change wesnoth.put_unit so that the unit is passed as the first parameter
  • Add wesnoth.erase_unit, which replaces wesnoth.put_unit when called without a unit
  • Add wesnoth.unit_vision_cost
  • Add wesnoth.unit_jamming_cost
  • Add methods to proxy unit metatable: matches, to_map, to_recall, clone, extract, advance, add_modification, resistance, defense, movement, vision, jamming, ability, transform All are equivalent to a similar wesnoth.* function, but are called as unit:fcn_name(arguments) instead of as wesnoth.fcn_name(unit, arguments)
  • Add wesnoth.races[race_id].traits
  • Add wesnoth.unit_types[unit_type_id].traits
  • Add optional third argument to wesnoth.match_unit, which is used for the $other_unit variable in the filter.
  • pairs() and ipairs() now work on vconfig userdata objects
  • Add helper.get_nth_child
  • Add helper.child_count
  • Add helper.child_array
  • wesnoth.remove_time_area no longer takes a comma-separated list of time area ids.
  • wesnoth.add_time_area no longer warns about commas in time area ids
  • unit.variables can now access sub variables.
  • Added wesnoth.get/set_side_variable to store variables in a [side]-
  • Added read/write fields carryover_bonus/carryover_add/carryover_percentage in lua sides.

Music and sound effects

  • Updated music track "Frantic", new one by Stephen Rozanc.
  • New sounds: dwarf hit and die, ink, mud fist and glob.

Terrains

  • Removed unit elevation from N-S hanging bridges
  • Added unit elevation to NW-SE and SW-NE stone chasm bridges
  • Added unit elevation to NW-SE and SW-NE plank bridges
  • Hanging, stone chasm, and plank bridges are now displayed in-game simply as "Bridge", retaining their descriptive names in the editor as per convention.
  • Fixed spurious "could not open image 'terrain/.png'" error messages caused by terrains without a minimap image (symbol_image) such as those from the Special category in the editor (Impassable Overlay, etc.).

User interface

  • It is now possible to switch from replay directly into normal play (bug #23833).
  • The game now shows a notification on remote clients if a sides takes very long to do a local choice (bug #23297).
  • It is now possible to replay a turn in mp games by loading autosaves.
  • The game now asks for confirmation when attempting to quit during the game.
  • Add "unit status=..." command to debug console to add/remove unit statuses
  • GUI2:
    • stacked_widget can optionally display a single layer at a time. This may be used to implement dialogs with multiple pages or tabs.
    • Widgets which are children of invisible or hidden parents can no longer be interacted with even if the children themselves are still internally visible.
    • Added support for tristate buttons/toggle panels or more generally n-state buttons/toggle panels
  • Added a version dialog button to the title screen, replacing the Paths option previously found in Preferences -> General.

WML engine

  • controller= in side filters can now be used in mp games for unsynced code
  • Added [effect] apply_to=max_expereince set=
  • Added enable_if= to mod and era events
  • Added $varname?default_value| in variable substitution
  • Fixed side_for= parameter in [message]s with input
  • New actionwml tag [on_undo] contains actionswml that is executed when the current action is undone
  • New actionwml tag [unsynced] executes its contents in an unsynced context where for example [set_variable]rand= will return unsynced results
  • [campaign] now supports [event] subtags which are added to every scenario of the campaign similar to [modification] [event]s
  • Added support for mod_x,mod_y= in [terrain_graphics].
  • Added support for has_flag= in terrain graphics [variant].
  • Added category= to [label] - allows grouping labels so that players can show/hide them
  • Add female_text= to [animate_unit] and [unstore_unit] for easier translating
  • Add female_message= to [message] for easier translating of lines spoken by generic units
  • AMLAs in [modifications] now use [advancement] tags instead of [advance] tags. This means you can add an AMLA to a placed unit by simply using its definition macro, for example {AMLA_DEFAULT}.
  • [get/set_global_variable]'s side= attribute now defaults to "global" (bug #23686)
  • [team] share_view=yes/no, share_maps=yes/no was replaced with share_vision=all/shroud/none
  • Add exclude_amla= key in [advancement] which disables the advancment if the unit has already taken certain other advancements.
  • The WML preprocessor now writes warnings to stderr for macros redefined without #undef, to help detect unintentional name clashes.
  • Fix macro definition line numbers being offset by 1 in WML preprocessor messages involving macros.
  • Added WML menu item and event handler views to the Gamestate Inspector dialog.
  • The Gamestate Inspector now displays empty WML variables too (including containers/arrays).
  • Added new possibilities for [effect]:
    • apply_to=alignment - change a unit's alignment
    • apply_to=max_attacks - change a unit's attacks per turn
    • apply_to=recall_cost - change a unit's recall cost
    • apply_to=vision, apply_to=jamming - change a unit's vision/jamming points
    • apply_to=new_advancement - add new advancement possibilities (either units or AMLAs)
    • apply_to=remove_advancement - remove advancement possibilities (either units or AMLAs)
    • apply_to=attack - add set_ versions of all existing increase_ keys
    • apply_to=attack - add increase_movement_used and set_movement_used to change the number of movement points the attack consumes
  • Ability to patch movetypes to account for custom terrains or damage types
  • Removed y offset by -1 from [message]'s scroll-to-unit logic.
  • Add [found_item] ConditionalWML to check if an [object]id= ActionWML has been taken
  • New auto-stored WML variable $other_unit usable in the following contexts:
    • [filter_adjacent] - $other_unit refers to the $this_unit of the enclosing filter (In weapon specials and unit abilities, the unit owning the ability.)
    • [filter_self/opponent/attacker/defender] (weapon specials) $other_unit refers to the other unit in the attack (eg in [filter_self], it's the opponent)
    • [affect_adjacent][filter] (unit abilities) $other_unit refers to the unit owning the ability
  • New rotate operators for directions: dir:cw and dir:ccw (This is useful mostly in conjunction with variable substitution.) These operators are applied after the existing '-' operator that takes the opposite direction.
  • Adjacency filters in abilities and weapon specials now support count= and is_enemy=
  • New implementations of backstab and leadership specials using $other_unit. In particular, leadership is now a single macro and it is not supported to give a unit a leadership ability of a different level (eg level 4 leadership on level 2 unit). The backstab= key is deprecated.
  • Add new looping tags: [for], [foreach], [repeat]
  • Add new flow control tags: [break], [continue], [return]
  • Added a new [difficulty] tag for defining a campaign's difficulty level
  • Add new syntax for [option], similar to the new difficulty syntax
  • Add [test_condition] ActionWML that tells why a conditional failed (for debugging)
  • Add [remove_time_area] WML tag which takes a comma-separated list of time area ids.
  • [time_area] no longer warns about commas in ids when not using remove=yes.
  • Add [random_placement] ActionWML
  • In [set_variables] you can now mix [value] and [literal], and even [split]
  • Add [resource] tag which contains [event] and [lua] tags smimilar to [modification] but hidden from the user.
  • Removed name= attribute in [side].
  • Add support for [endlevel] bonus=

Editor

  • Added Category field and color sliders to the Edit Label panel.

Miscellaneous and bug fixes

  • Fix $this_unit auto-stored variable not working correctly in most SUFs
  • Made Documents\My Games\WesnothX.Y the default user config+data dir on Windows to replace the broken \userdata default that has never been acceptable practice. Portable installs are now required to explicitly use . or .. (e.g. --config-dir .\userdata) to force the user config+data dir path to be relative to the current working dir (see also bug #23753).
  • Wesnoth now uses combined stdout+stderr log files on Windows, moved to \logs during initialization and first created in the user's temporary files directory defined by Windows. Log files are named like "wesnoth--.log" and up to 8 log files are kept along with the latest session's log file. This avoids issues caused by SDL 1.2's built-in redirection code not being Unicode-aware (fixes bug #22897).
  • Removed legacy filesystem API implementation.
  • Fixed Generate Map dialog bug that caused last choice of map generator to not be actually selected (bug #23711).
  • Fixed unbound memory read in internal time formatting code with specially-crafted input.
  • Child wesnothd processes spawned by the Host Network Game option on Windows now display console output directly instead of using stdout.txt and stderr.txt.
  • Remember last selected modifications separately for single and multiplayer.
  • Fixed SDL2 compilation issues.
  • Fixed RECRUIT_UNIT_VARIATIONS core WML macro leaking an internal temporary variable ($recruited_unit_random_variation).
  • Fixed unit [resistance] and [jamming_costs] not being considered for sync check.
  • Fixed problems with slow/poison/petrify sounds (bug #23024) and made the sounds play automatically when the status is inflicted in combat, instead of being played by attack animations.
  • Fixed OOS on random maps, where clients placed sides in different castles.
  • Fixed some (not all) OOS caused by modifying a sides controller by wml.
  • Fixed wml menu items becoming unsynced in later scenarios.
  • The game now automatically detects whether to show the game connect screen between scenarios.
  • Fixed possibility of corrupting saved games in certain instances, eg if an add-on tries to set an invalid variable
  • Fixed bug 23060: unit stat tooltips do not show.
  • wmllint, wmlscope, wmlindent and wmllint-1.4 now run on Python 3
  • Text boxes tab completion now lists friends and whisperer nicks for easier answer (bug #9742)
  • Avoid crash when planning moves on planned recruits (bug #18637)
  • Fixed cases of wrong unit type used in planning moves (bug #20299)
  • Fixed hang when attempting to make a screenshot from a non-existent map via command-line (bug #20900)
  • Fixed Cancel Orders not working when loading MP game (bug #22133)
  • Fixed broken Oasis terrain help entry (bug #23023)
  • Fixed load game hot-key not working in the main menu (bug #23215)
  • Added user's leave notification for ingame players

Version 1.13.1

Security fixes

  • Disallowed inclusion of .pbl files from WML, independent of extension case (CVE-2015-5069, CVE-2015-5070, bug #23504).

AI

  • Fast Micro AI: exclude hidden enemies from attack evaluation by default; add optional key attack_hidden_enemies to override this
  • Lua AI helper functions: fix bug crashing the AI when number= is not set in a unit attack definition
  • Micro AIs: add a warning and avoid crash when a non-existing side is used in the [micro_ai] tag

Campaigns

  • Dead Water:
    • The Stun effect now expires at the stunned unit's side turn end
  • Under the Burning Suns:
    • The Stun effect now expires at the stunned unit's side turn end

Editor

  • Redesigned Generate Map dialog to use a real listbox and remember the last choice during the same editor session.
  • Fixed stack corruption bug in the Side Setup dialog.

Graphics

  • New generic portraits for the Walking Corpse and Soulless

Language and i18n

  • Updated translations: Galician, Scottish Gaelic, Russian

Lua API

  • New function wesnoth.get_viewing_side
  • New function wesnoth.remove_dialog_item

Multiplayer

  • A New Land:
    • Removed the ability to select individual factions when using map settings as this breaks player recruit lists (bug #23593).
  • Era names no longer support formatting markup in the game setup screen.
  • Removed the Silver Mage from the available leaders for the Rebels faction in Age of Heroes.
  • Fixed "Accept whispers from friends only" not working with the default lobby UI, and added a warning every 5 minutes for individual rejected senders.
  • Allow custom colors in MP connect dialog (bug #23629).
  • It is now possible to change a side's controller by WML (for example with [modify_side]) in a MP game.
  • Changing teams by WML in a MP game causes less bugs (bug #23028).
  • MP campaigns now behave more like single-player campaigns.
  • Various fixes in the MP game setup screens (bugs #23641, #23509, #23496, #23462).

Units

  • Fixed the Shuja not having the default AMLA.

User interface

  • Fixed minimap buttons appearing without contents or in the wrong state during WML start events until they are interacted with or control is given to the player for the first time or some other unspecified thing happens.
  • Force uniform font rendering settings across X11 and Apple OS X, avoiding color glitches resulting from incorrect applications of subpixel hinting (bug #20337).
  • Hide mod options from the user command prompt dialog in the MP lobby when not authenticated as a mod.
  • Fixed unit bars, ellipses, and orbs disappearing for individual units in replay mode when using Skip Animations/Quick Replays if they moved without attacking or otherwise switching to a new animation.
  • Chat Log dialog now starts on the last log page when there are multiple pages.
  • Fixed Wesnoth's fonts remaining in use by Windows after abnormal exits, as well as being available to other applications.
  • Started showing on which difficulty levels a campaign was completed.
  • Modifications for single-player campaigns are now selectable directly in the single-player Campaigns menu.
  • The game now automatically detects whether to show the game setup screen in single-player mode.

WML engine

  • Added support for [object] duration=turn end
  • New or updated image path functions:
    • ~BW(): converts an image to black and white
    • ~NEG() now supports 0,1 or 3 arguments, allowing solarization effects
    • ~SWAP(): swaps the RGBA channels of the image
    • ~CROP(): now supports negative x and y values.
  • Added support for SLF in [label] when used inside an event
  • Added synced=yes/no (default yes) to [set_menu_item]
  • [options] is now recognized inside [campaign]
  • type=sp/mp/hybrid now must be specified for [modification]s

Miscellaneous and bug fixes

  • Removed abandoned libana network API implementation.
  • Fixed bug #23201, toggle icons display error in replay.
  • Added --wconsole switch to allocate a console on startup (Windows-only).
  • Added cwesnoth.cmd wrapper script to start Wesnoth with a console displaying stdout+stderr (Windows-only).
  • Updated mainline campaigns and multiplayer scenarios to use [filter] status= instead of [filter] [filter_wml] [status]
  • Fixed a segfault in [move_units_fake]
  • Fixed unbound memory read in the MP map selection screen that could lead to a segmentation fault or other abnormal behavior (bug #23606).
  • Made silence.ogg larger to work around a crash involving the multiplayer lobby with music and sound enabled (bug #23633, bug #23599) with libvorbis builds affected by Debian bug #782831.
  • Moved [role] tag to Lua (fix for bug #23630)
  • Removed broken Python port of wmlxgettext from data/tools/.
  • Default to non-strict compilation with CMake.
  • It is no longer possible to undo moves before the last (manual) shroud update.
  • Debug commands are now synced.
  • Fixed GUI2 toggle panels in some way that the author of this changelog entry chose not to specify.
  • Removed some config reloads, especially when leaving games or entering the single-player Campaigns menu.
  • It is now possible to use WML to disable/enable quick 4 MP leaders in the Default era and the time over advantage dialog by setting a WML variable.

Version 1.13.0

Security fixes

  • Fixed arbitrary file read from WML/Lua API (CVE-2015-0844, bug #23440).

Add-ons client

  • The Update All button is now displayed on all Add-on Manager views instead of just the Upgradable filter view, and enabled only when there is at least one add-on that may be upgraded.

Add-ons server

  • Add-on metadata pattern blacklisting implemented.
  • Major internal refactoring done.

AI

  • New Micro AI: Fast AI
  • Big Animals Micro AI: bug fix for units not attacking when [avoid_unit] is not set
  • Bottleneck Micro AI: bug fix for case when allied units are present
  • Coward Micro AI: new optional key attack_if_trapped=
  • Forest Animals Micro AI: bug fix for wander terrain lying on border hexes
  • Herding Micro AI: bug fix for dogs sometimes having moves left at end
  • Lurkers Micro AI: fix bug in wander terrain selection
  • Lurkers Micro AI: bug fix for attack error when lurker runs into ambush
  • Lurkers MAI: bug fix for attempting to attack petrified units
  • Messenger Escort Micro AI: new optional parameters [filter], [filter_second] and invert_order=
  • Stationed Guardian Micro AI: make guard_x/y= optional keys
  • Stationed Guardian Micro AI: bug fix for unreachable stations
  • Messenger Escort Micro AI: bug fix for escort units blocking messenger's progress
  • Several Micro AIs: fix a variety of rarely occurring but serious bugs, such as invalid savegames or disabling the AI from working for the rest of the turn or after changing the Micro AI settings.
  • Bug fix for requiring unnecessary keys for removal of several Micro AIs
  • Fixed a bug that made it impossible to change or delete Micro AIs after a game had been reloaded (bug #21750). This was a general bug in the RCA AI mechanism and applied to other CAs as well, but it was most visible in the Micro AIs.
  • Some internal reorganization of Micro AI code to facilitate customizing them for UMC and adding functionality from other versions of Wesnoth. Some code cleanup for consistency, readability and speed, as well as fixing of some minor and subtle bugs.
  • Fix bug in Random Recruit Micro AI: the AI can now handle custom castle terrain independent of its terrain code
  • Fix bug in Return Guardian and Goto Micro AIs when there is no path to the goal hex
  • Several fixes of translatable strings in Micro AIs
  • Micro AIs: only display on-screen error messages when in debug mode
  • Add conditional inclusion of AI macros to AI cfgs in data/ai

Campaigns

  • Changed all occurrences of {FLAG_VARIANT ragged} to {FLAG_VARIANT6 ragged}
  • Singleplayer campaign creation now utilizes the create, configure, and connect engines from the multiplayer codepath.
  • Eras, mods, and options are now available for sp campaigns.
  • Fix sighted events firing too early in several scenarios. Fixes bug #22466
  • Use the new bigmaps for A Tale of Two Brothers, Delfadors Memoirs, The Hammer of Thursagan, Northern Rebirth and the epilogue of Legend of Wesmere.
  • Remaining cases of old-style note and carryover information in [objectives] have been converted to a newer style.
  • A Tale of Two Brothers:
    • Updated music playlists.
  • Descent into Darkness:
    • Fixed various issues with player and enemy gold and income in 'Descent into Darkness'.
    • Fixed Darken Volk's ellipse in scenarios 'A Small Favor part 3' and 'Alone at Last'.
    • Fixed Darken Volk being completely passive in 'Alone at Last'.
    • 'Return to Parthyn' now has variable content depending on whether necromancy was used in 'Saving Parthyn'.
  • Eastern Invasion:
    • In 'Captured', stolen gold won't be mentioned if the player had no carryover gold.
    • Updated maps for scenario 14, 16 and 17b.
    • New animation for Ravanal's shadow wave.
    • Added the Skeleton Rider line.
    • New map for 'Mal-Ravanal's Capital', as well as updated maps for scenario 2 and 4b.
    • Tweaked and rebalanced all scenarios up to 'Two Paths'.
  • Heir to the Throne:
    • Tweaked and expanded music playlists for all scenarios.
    • Fixed missing message in 'The Siege of Elensefar'.
    • Hide unit variations that should not be listed in the help browser.
  • Liberty:
    • Fixed possibility of no viable routes around guards in 'Hide and Seek'.
    • Tweaked resistances for the Skeleton Rider line.
  • Northern Rebirth:
    • Fixed Sister Thera and Father Morvin respawning into the recall list if the other is on the north or west map edges.
    • Sister Thera and Father Morvin will no longer speak dialog on their death after 'The Pursuit'.
    • The maps for 'Infested Caves', 'Clearing the Mines', and 'The Pursuit' have been completely redone.
    • All scenarios up to 'Old Friend' have been significantly tweaked and rebalanced.
  • Sceptre of Fire:
    • Balancing changes for 'The Dragon'.
  • Son of the Black Eye:
    • S2: adjusted starting villages; scenario now ends if Kapou'e is already on the signpost when the messenger comes back
    • S3: make objectives consistent between before and after trolls appear
    • S6: remove AI controller. It doesn't work with sides without a leader
    • S6: reduce randomness of unit types unloading from galleons
    • Minor balance tweaks to scenarios 7, 8, 12, 14, 15, 17 and 18.
    • Made allied leaders less likely to get themselves killed.
    • Minor changes to objectives and messages in scenarios 7, 8 and 14
  • The Hammer of Thursagan:
    • Fixed missing objective in 'The Court of Karrag'.
    • Rebalanced scenarios 'Invaders', Mages and Drakes' and 'Fear'.
    • Set Masked Dwarvish Lord range attack same as for Dwarvish Lord
    • Fixed some messages not being shown in custom events in 'The Underlevels'
    • 'The Court of Karrag' and 'Epilogue' feature a new map.
  • The Rise of Wesnoth:
    • Hide unit variations that should not be listed in the help browser.
  • Tutorial:
    • Rewritten with an eye to being less constricting and more informative.
  • Under the Burning Suns
    • Fixed recruited Desert Archers being always male.
    • Fixed malformed rand range errors during AI turns on medium difficulty in 'A Stirring in the Night'.
    • Fixed bug #22800: Cloaked Figure appears in strange location.
    • Fixed bug #22799: No allies killed by enemy reinforcements.
    • Fixed bug #22790: Various problems with dehydration.
    • Hide unit variations that should not be listed in the help browser.

C++ Engine

  • Purge "human_ai" controller type. This is a fixup of bugfix #18829 below.

Editor

  • Added an entry for the terrain description help to the context menu.
  • Default hotkey bindings for brushes (1-5)
  • Disabled the swap palette button when the unit palette is active.
  • Disabled the tod schedule and playlist menus in pure map mode.
  • Support for displaying the saved status of the selected area.
  • Fixed error messages about missing UI elements.
  • Fixed falcon race missing an icon due to having incorrectly-named image files.

Graphics

  • New Ancient Lich baseframe and animations
  • New standing animation (NE and SE) for the Revenant
  • New standing animation for the Dwarvish Stalwart
  • Smooth unit movement over terrains with elevation such as keeps and bridges (bug #20635).
  • Fixed bug #22045: Only blit neutral surfaces.
  • [item] images are now subject to local ToD lighting effects instead of just the current map-wide ToD lighting (bug #22215).
  • Disabled "alpha thresholding" in the bilinear interpolation algorithm used for all sprites and images. (This was introduced as a workaround for an old bug.)
  • Add a new bilinear interpolation implementation, which properly performs alpha weighting when averaging colors, and rename old one as the legacy version.
  • Align unit overlays to the sprite rather than the occupied hex.
  • Added Brazier and Lit Brazier embellishment terrains
  • New beach waves terrain animation.
  • New images for the dummy, barrel, and green cloak items
  • Updated Snowy Orcish Castle and Keep terrain images

Help browser

  • Several sections have been rewritten or had their layout improved
  • Added trait list with links to the help page for unit types
  • Added Defense Cap column to the Terrain Modifiers table in unit help pages for units with a defense cap on at least one terrain type, which also now include a note to this effect in their special notes.
  • Fixed a bug which caused the terrain section topic not to properly generate a list of its contents.
  • Add a new help section to the terrains topic which explains about mixed terrain types.
  • When using the terrain description feature with a mixed terrain type, the game will autogenerate a formatted explanation of its best / worst movement / defense properties.
  • Added automatic help entries for all eras, fulfilling Feature Request #22107
  • Fixed in-game help descriptions of default factions, using content from wiki
  • Added automatically generated lists of races and alignments to the descriptions of factions
  • Autogenerated Time of Day Schedule section
  • Unit types that do not include any visible (hide_help=no) variations no longer generate topic sections.

Language and i18n

  • Updated translations: Chinese (Simplified), Chinese (Traditional), Czech, French, Galician, German, Greek, Hungarian, Italian, Lithuanian, Polish, Portuguese, Russian, Scottish Gaelic, Slovak, Spanish, Vietnamese
  • Fixed cmake pot-update target on Debian and other systems that do not use bash as the default /bin/sh.

Lua API

  • Upgraded Lua to version 5.2.3.
  • Fix bug #21761: wesnoth.synchronize_choice will now give a warning when the table returned by the user-specified function is not completely valid, when wesnoth is running in debug mode (--debug command line flag).
  • Added new function wesnoth.get_all_vars().
  • Add (tentative, preliminary) support for lua scripting of wesnoth application functions
  • Enable ilua "strict mode" by default. This safety feature helps to catch errors caused by mistyped variable names, and improves the behavior of the lua interpreter console. See 1.13.0 RELEASE NOTES for more details.
  • Add multiplayer client scripting (join lobby, chat, host games, save games, reload games) and mp unit tests based on this
  • Add functions in wesnoth.map_location to perform map location arithmetic using the same functions the C++ engine does
  • Enabled support for the bit32 library (bitwise operations)
  • Added support for treeview wigets in lua gui2 dialogs.
  • Added support to define wml conditional tags in lua. See the wesnoth.wml_condtionals table as described on the wiki.

Multiplayer

  • Fixed the Set Password option during game creation not having an effect due to a misplaced WML attribute in the client's command for the server (bug #23015).
  • Fixed missing scenario title in lobby for reloaded MP campaigns.
  • Added "no mirror" and "no ally mirror" options to the MP configure screen.
  • Multiplayer content [era], [modifications] now carry version info of their associated add-on, and may have "addon_min_version" fields set which specify backwards compatibility with earlier versions.
  • Missing content for games hosted in the mp server may now be retrieved automatically by clicking on these games in the mp lobby.
  • Ported the password prompt displayed when joining a password-protected MP game to GUI2 (bug #23455).

Music

  • Change main menu track to Journey's End.

Replays

  • Added a button that allows playing a single move in replay mode.

Units

  • Increased the experience requirement for the Rami from 32 to 39
  • Increased the experience requirement for the Saree from 56 to 64
  • Changed sound timings for Khalifate melee attacks
  • New chill tempest animation for Lich/Ancient Lich
  • Add 'elemental' trait to Mudcrawler line
  • Fix sound timings for drake fire animation macros
  • Assigned capitalized translatable names to Walking Corpse and Soulless variations (bug #22902).
  • Hid alternate Great Wolf variation from help as it is identical to the default variation stats-wise.

User interface

  • Added a context menu option for command mode.
  • Added a Classic theme which restores the 1.10 UI.
  • Made orb and minimap colors configurable in Preferences.
  • Remove 'allow_new_game=no' entries from random map new game list
  • Fixed bug #22095: An assertion failure in the gamestate inspector.
  • Changed: A listbox can now update its size when rows are added.
  • Changed: Avoid listboxes to handle mouse clicks twice.
  • Fixed bug #22144 + #22046: An assertion failure with empty labels in a listbox.
  • The :inspect dialog now uses the same function as saved games to generate WML in text form instead of a simplified version.
  • Added a button to copy the currently displayed content from the :inspect dialog to clipboard.
  • WML array elements are now displayed with subscripts in the :inspect dialog.
  • Added a button to copy the in-game Chat Log dialog contents to clipboard.
  • Fixed the WML load error dialog not displaying an add-on name instead of falling back to its directory name if the add-on contains an outdated _info.cfg file lacking an [info]title= value.
  • Fixed most of the minimap buttons and the End Turn button appearing without contents or in the wrong state during WML start events until they are interacted with or control is given to the player for the first time.
  • Added a new subdialog in Preferences to clean or purge the WML cache.
  • Fixed AI engine names in the MP game setup screen being translated to the language selected when Wesnoth was started rather than the current language (bug #22092).
  • Added a new "Advanced Settings" button and dialog to campaign select.
  • Added new wml attributes to listbox: has_minimum and has_maximum.
  • Added a "Disable automatic moves" preference to disable automatic movements at the beginning of a turn.
  • Fixed lower button row padding for GUI1 dialogs including Statistics and the Add-ons Manager (bugs #22379, #22791).
  • Fixed mouse tracking issue with workaround by changing the default window resolution for OS X to 800 x 600 (bug #20332).
  • Removed the "Replay viewer" text label from the replay controller theme, because it caused problems for translators and was unnecessary
  • Fixed bug #22337: Bug in inspect long arrays
  • Added a new "Alerts" configuration screen under Preferences > Multiplayer, refactored all of the mp alerts / desktop notifications for customizability
  • Removed "desktop_notifications" and "lobby_sounds" advanced preferences, as they are subsumed by the Preferences > Multiplayer > Alerts screen now.
  • Added support for hyperlink rendering and clicking in gui2 labels.
  • Added lua interpreter console, accessible via a hotkey
  • Add lua console button to gamestate inspector
  • Add command history and history expansion to lua console, based on optional support from GNU readline history library.
  • Add support to evaluate expressions automatically in lua console, based on a lua lib "ilua", and "experimental compilation" technique.
  • Fixed game falling back to desktop if a user declines to load a previous version save from within a game
  • Fix bug #22984: Sliders (GUI1) focusing improperly in non-game contexts, and not responding to left-right key press
  • Wesnoth now ships with Bold and Oblique forms of its default font, Deja Vu Sans, and these are used in many menus and in the in-game help for styling text where previously we used SDL_TTF. Fixes bug #22376.

WML engine

  • New image path functions:
    • ~XBRZ(): Takes one argument, the scaling factor (1-5). Uses the xBRZ scaling algorithm added in this release.
    • ~SCALE_SHARP(): Anologous to ~SCALE() but using the nearest neighbor scaling algorithm instead.
    • ~PLOT_ALPHA(): No arguments, plots the alpha channel in greyscale. Mainly useful for diagnostics of other function combinations, or debugging the engine itself.
    • ~WIPE_ALPHA(): Again mainly useful for diagnostics.
    • ~ADJUST_ALPHA(): Takes either a % or an 8-bit integer, and "multiplies" the alpha channel by this value.
    • ~SEPIA(): Gives the image a sepia tint.
    • ~NEG(): Gives the image a photographic negative effect.
  • Added customizable recall costs for unit types and individual units, using the new recall_cost attribute in [unit_type] and [unit] (bug #13074).
  • Added support for [elseif] tags inside [if]
  • Schema validator and preprocessor #warning messages now conform better to the new WML parser/preprocessor diagnostics format introduced in version 1.11.10.
  • Added define= functionality to scenarios, eras, and modifications.
  • [unit] uses passed [advancement]s instead of unittypes advancements if [advancement] were given in [unit].
  • allow [lua] tags inside [modification] and [era] (which have the same effect as [lua] tags inside [scenario]).
  • enable side_for= in key [message] with [option]s.
  • added [effect] apply_to=fearless/healthy which is now used by healthy/fearless traits instead of hardcoding the id of those traits in c++.
  • added support for a shuffle key in the [music] music to allow selecting between random and non-random music play (bug #19653)
  • Fixed a bug that prevented [animate_unit] from displaying death or victory animations for those units that filter them based on weapon (eg. Wose)
  • New WML tags: [put_to_recall_list] and [sync_variable].
  • Fixed nested macros emitting incorrect bindings to the default 'wesnoth' textdomain at the end of a substitution instead of the parent textdomain, this breaking localization of subsequent strings (bug #22962).
  • Sounds for slow and poison are automatically played when slowing/poisoning a unit, and should no longer be played by the attack animations.
  • force_lock_settings defaults to yes in [scenario].
  • Moved all preprocessor diagnostics from the 'config' log domain to 'preprocessor'.
  • Dropped support for [filter_side] in [gold] and [modify_ai], [theme] name= in place of id, and [object] duration=level.
  • Allowed direct modification of unit.ellipse variable even if ellipse= is set in [unit_type] or by an [effect]
  • Add accelerate=yes/no key in [delay]
  • Add support for status= key in SUFs
  • Add "disallow_shuffle" key in [side], which causes the "shuffle sides" feature always to skip this side, even if it is human playable.
  • Add "require_scenario" key in [scenario], [multiplayer], which causes a multiplayer game to require that all participants have the add-on installed.

Miscellaneous and bug fixes

  • replace 'fight_on_without_leader'=yes/no with defeat_condition=no_leader/ no_units/always/never which allows the wml developer to decide when a side is considered defeated
  • Fix Fisher-Yates implementation of Lua helper.shuffle (bug #21706)
  • Fixed issues with the ~BG() image path function not always working with cached images.
  • Idle controlled sides now serialize as human controlled.
  • Fixed bug #20876: A segfault in cut_surface.
  • Dropped support for AmigaOS, BeOS, and OS/2.
  • Increased the sound mixer channel allocation from 16 to 32, thereby raising the limit for simultaneous sound effects from 5 to 20, and simultaneous UI sounds from 1 to 2.
  • Fix bug #21758: "Ready not blocked while player pick faction."
  • Fix bug #18829: "ai sides show up as "controller=network" on remote clients". This issue is the source of some difficulties with mp campaigns which occur when the campaign is reloaded from a non-host side, or after a player rejoins from observer status. Hopefully, reloading campaigns is easier after this.
  • Fix bug #21797: "Mandatory WML child missing" when leaving a reloaded game.
  • Fix bug #21808: Cannot join a reloaded game as an observer.
  • Fixed halos glitching through locations that become shrouded after the halo is rendered for the first time.
  • OS X user data directory is now ~/Library/Application Support/Wesnoth_1.13. For compiling Wesnoth using Xcode, a new version of wesnoth_compile_mac_1.13.zip is also required.
  • Fix bug #21257: Lagging animations with skip AI animations and fog/shroud.
  • Improved unicode handling on windows for characters outside the Basic Multilingual Plane.
  • Fix bug #3856: The turn dialog used in hotseat MP play now applies a blindfold for the duration of the dialog.
  • Petrified units are no longer displayed in the "Damage versus" tooltip.
  • Fix bug #21759: "timer refreshed too often when time runs out"
  • Use one combo box instead of check boxes for replay options "skip replay" and "enter blindfold". This fixes the mp lobby in width <= 800 resolutions. Fixes bug #21888.
  • MP server now commits controller changes to the replay rather than updating as we go along. Among other things these means that players that join an scenario with ai sides which has already started won't have corrupted controller types which would prevent them from successfully saving and reloading in the future. We have also moved all "controller tweaks" associated to the start of MP games to server-side rather than having a mix of client and server code.
  • Fixup user-displayed strings associated to replay options, idle state
  • OS X: mark Wesnoth as not high-resolution capable. This greatly improves performance on retina devices.
  • Upgrade Xcode project to enable both i386 and x86_64 builds
  • Fixed problems with idle controller type in networked mp.
  • Fix bug 21459 by making dropped sides default to idle.
  • Fix bug 21882 by introducing "fight_on_without_leader" boolean attribute of [side] tags and refactoring check_victory to use this.
  • Changed: Don't use the random generator for units with no names.
  • Fix bug #21910: code for game is ready bell is corrected, simplified, and moved to mp_connect::process_network_data.
  • Deliver desktop notifications in tandem with "game is ready" bell and also the "game has begun" bell.
  • Fix bug in which blindfold could cause OOS.
  • Fix bug #21914: allow drake walking corpse variation to move on unwalkable
  • Fix unnecessary "Mandatory WML Child not found" error when replay file doesn't have a [carryover_sides_start] tag
  • Server now generates PR 121 compliant replay files.
  • Fix bug #21025: replay controller doesn't execute play_next_side properly
  • Fix bug #21916: ready blocked at inappropriate times
  • Fix bug #21931: controllers bugged in (basic campaign) when networked
  • Fix bug #21883: make sure movement animations don't cycle with fog on
  • Fix bug #21316: make subframes within standing animations cycle by default
  • Fix bug #21967: fix crash when unit modification to traits has empty id
  • Fix bug #19258, 21962: WML variables spuriously copied to replay_start
  • Fix implementation bug in random number generator: rand_pool_ is now an unsigned long rather than an unsigned int.
  • Fix bug #21491: fix drag+drop for unit movements
  • Fix bug #21448: make premoved units selection like in Wesnoth 1.10
  • Fix bug #21372: fix unit move continuation if enemy discovered
  • Added a Python/Tkinter based GUI to allow running wmllint, wmlscope and wmlindent in an easier way
  • Some commandline output which was helpful for noninteractive ai testing is redirected from std::cout to a logdomain "aitesting".
  • Added WML unit test capabilities, accessible from commandline using -u switch. These are useful for unit testing the WML / lua api.
  • Support for total conversions, so called "cores".
  • Fix bug #22030: correct index of weapon special disable in attack GUI
  • Fix bug #21964: assertion failure when using "controller" attribute with a number.
  • Add [do_command], which takes the body of a [command] tag from ReplayWML, (some possibilities not allowed), and executes the corresponding action. It is replay safe and triggers WML events as appropriate.
  • Reallow selection of another unit on same side without deselect first
  • Add "strict mode". Using --log-strict=[severity] causes wesnoth to throw a game_error exception when anything is written to a log as severe as that. For example --log-strict=warning causes both warnings and errors to generate runtime exceptions. This is intended for unit tests.
  • Fix bug #21867: team flag colors not refreshed after making use of [modify_side] color= unless a new flag set is also provided.
  • Fix a bug where in movement records, "skip_sighted" was sometimes spelled as "skip_sighed".
  • Fix bug #22020: make base units with variations help entry clickable from the 'Unit Description' menu entry or from side pane.
  • Fix bug #21977: ready blocked on scenario transition, when allow_new_game=yes
  • Add "MAKE_ENUM" macro to simplify parsing of WML options.
  • "MAKE_ENUM" macro signals WML parsing errors when the game is run in debug mode, and an illegal value for an attribute is encountered.
  • Fix bug #21397 Reloading may cause a side's turn is not initialized. This bug affected only networked mp, at least since version 1.8.
  • [modify_side] may now alter the value of [side] defeat_condition.
  • Fix bug #22116: unlock movement when attacking enemy+discovering in fog
  • In mp the other players now also proceed to the next scenario if one human player wins.
  • Fix bug #21397: "Saving and loading may cause a side's turn is not initialized".
  • Fix bug which caused no units to be displayed when reloading an end of scenario save, by stripping them from the save file. However, this does not fix bug #15545, which was the reason that this behavior was introduced.
  • Fix bug #22123 "Replays don't reset map when reset button is pressed, causing OOS"
  • Wesnoth reports an error if it evaluates [if] and finds no [then], [else], [elseif] children, as a chat message from lua.
  • Fix bug #22134: Campaign prefix not used in mp campaign saves
  • Made the error messages sent to stderr when the core data dir is incorrectly set more helpful.
  • Fix bug #20126: Recursive preprocessor includes cause infinite loop
  • Added 'faction_lock' and 'leader_lock' to SideWML to be used in MP Connect screen. Fixes bug #21978.
  • Fix bug #22231: partial moves now able to be continued in whiteboard
  • Added wmi_pager object to control how wml menu items are displayed in context menus, and allow to display more than seven.
  • Fix an inefficient implementation of unit::invisible, in an effort to address slow performance problems: http://forums.wesnoth.org/viewtopic.php?f=4&t=12139&start=180#p569931 (Also see gfgtdf's commits trying to optimize the minimap loop)
  • Made it so /../ (non-Windows) or /../ (Windows) are also considered possible data directories if they contain a data/_main.cfg file, intended to help with cmake builds.
  • Fix bug #21723: team-specific items displayed to wrong players / at wrong times
  • When parsing command line args, if we fail to parse, give an error message rather than crashing with no explanation.
  • Fix bug #22305: assertion failure in unit_display.cpp
  • Fix bug #22086: wrong or missing minimap previews displayed b/c of problems with saveindex
  • Fixed the SCATTER_UNITS macro so that it may no longer attempt to place units at the map borders.
  • Fixed bugs in [filter_vision] reported here: http://forums.wesnoth.org/viewtopic.php?f=21&t=40702 [filter_vision] is now a check for any side matching the filter to have appropriate vision.
  • Add [has_ally], [has_enemy] to work around issues reported here: http://forums.wesnoth.org/viewtopic.php?f=21&t=40702 In a side_filter, [has_ally] and [has_enemy] are corrected / simplified versions of [allied_with] / [enemy_of], this is an extension of the bugfixes for [filter_vision].
  • Fix [side] share_view/maps always beeing false for non-first levels in mp campaigns
  • Fixes start-of-scenario multiplaer saves (#22068)
  • Fix bug wherein "lobby sounds" advanced preference didn't do anything for the normal (GUI 1) lobby.
  • Fix bug wherein dbus notifications did not have a wesnoth icon
  • Fix bug wherein chat history synopses weren't working right in the dbus notifications
  • Default to classic minimap unit/village color coding (colored by side).
  • Default to classic minimap terrain representation (satellite view).
  • Display the tooltip for actions browsed in the hotkey preferences dialog.
  • Enabled action icons in the hotkey preferences dialog.
  • Fix bug #21717: "F5->reload wml tree" doesn't work in editor.
  • Fix bug #21298: Minimap shows invisible overlays
  • Remove carryover WML (this may make a reappearance in 1.13.0 but it is considered premature now, please see github PR discussion for more info)
  • Fix bug #22465: Minimap not redrawn after turn dialog.
  • Fix bug #22306: move_unit moves a unit even when it shouldn't
  • Fix minor bug where toggling accelerated speed caused two lines of print messages to display on top of one another. Reported here: http://forums.wesnoth.org/viewtopic.php?f=5&t=40745
  • Fix bug #22611: loading a theme with nonexistent button images would cause the program to close.
  • Fix bug #22487: advanced preferences descriptions not showing up
  • Fix bug #22646: Tooltips broken in replay viewer
  • Fix bug #22643: Cannot compile with boost 1.56
  • Fix issue where the chatlog for a replayed game could not be opened in single player. The chatlog can now always be opened.
  • Fix bug #22745: choose_track function crashes the game in certain cases
  • Fix bug #22650: nontranslatable strings displayed in tooltips for terrain icons
  • Fixed Gameplay -> Time of Day help topic displaying the Dawn ToD picture where the Second Watch picture should be used instead (bug #22537).
  • Fixed mishandling of nested subnamespaces by the [clear_global_variable] WML action causing an assertion failure (bug #21093).
  • Fix bug #22443: Scenario Settings table has inaccurate Start Gold info in certain cases
  • Fix Grand Knight image being distorted in the sidebar
  • Fix bug #22251: Map labels not appearing in mp
  • Fix bug: lobby sounds not all playing. This was fixed by adding a second dedicated channel for UI sounds, and moving the "Ready to start" sound to the turn bell channel.
  • Bug fix: another instance of "overlapping messages", this time with the planning mode activation hotkey
  • Fix bug #21400: Use unit 'image' with higher priority than 'image_icon' for animation frames with no specified image.
  • New filesystem implementation based on boost filesystem
  • Added "--noaddons" command-line argument, prevents any add-ons from being loaded.
  • Added "--render-image" command-line argument, similar to --screenshot, but instead of a map, it takes a wesnoth imagepath and generates at bitmap with the filters applied.
  • New gettext implementation based on boost locale. This raises min boost requirement to 1.48, and adds a new dep (locale, filesystem was also added above)
  • New image scaling routine imported from the xBRZ project (HqMAME on sourceforge)
  • Now may save screenshots and other images as pngs, using SDL_SavePNG lib (from github)
  • New RNG implementation using boost::mt19937, and boost::random_device for seeds. The boost random library is now a build requirement.
  • Add "lua" random map generation
  • Multiplayer server can now handle scenarios with more than 9 sides
  • [modify_side] controller= now works in networked mp. If a null-controlled side becomes alive by [modify_side] controller=ai/human then the currently active client will be assiged controll
  • Fixed a stingstream syntax error that caused the build to fail in Visual Studio 13
  • Fixed hotkeys for changing tips in titlescreen (bug #18926).
  • Fixed problems building wesnothd using cmake if not building the game
  • Added several new options to GUI.pyw
  • Fixed a bug in which sides without a leader, but not defeated due to defeat_condition set to no_units_left or never couldn't capture villages
  • Fixed several Mac OS specific bugs in GUI.pyw
  • Fixed bug 22987 for filtering on era and mods in the Multiplayer lobby.
  • Fixed bug 23117 Invert breaks lobby filtering if Apply Filter is off.
  • Fixed bug 23426 Show terrain description hotkey works also for shrouded hexes.
  • Fix bug #23243: Segfault while clicking during [delay] in prestart.
  • Remove support for legacy style unit abilities descriptions.
  • Fixed bug #23445: set default build type in cmake to "Release" to ensure that the game is not unoptimized
  • Increased minimum version of FriBiDi to 0.10.9 in cmake to match scons
  • Changed how FriBiDi is found in cmake to using pkgconfig
  • Made the file chooser dialog (used for e.g. loading maps in the editor) use uniform path delimiters on Windows, fixing issues with browsing to parent directories (bug #23224).

Version 1.11.11

Add-ons server

  • Filenames with whitespace in them are no longer allowed.

AI

  • Non-default multiplayer and Micro AIs:
    • Fixed bugs which could lead to the AIs being disabled for the rest of the turn if WML events removed or changed units during the AI turn
    • Improved error reporting of invalid AI actions

Campaigns

  • Eastern Invasion:
    • Updated maps for scenarios 12, 14, 16 and 17a.
    • Fixed a bug in 'Captured' which can cause the beginning to make no sense.
  • Under the Burning Suns:
    • Fixed broken Divine Incarnation unit type in The Final Confrontation.

Language and i18n

  • Updated translations: German, Italian, Slovak

WML engine

  • Bug #21643: Removing fog from a single hex no longer makes the hex ugly.
  • WML files whose names contain whitespace trigger preprocessor errors.
  • Bug #21722: Event handlers with multiple names never fired.

User interface

  • Corrected most of the issues left with the new default theme.
    • Reintroduced the alignment, race and side being shown in the sidebar.
    • Adjusted the theme to the size and shape of the new minimap frame images.
    • Certain changes to the used text colors, sizes and alignment.
  • Non-team labels no longer remove team labels that were present in the same hex.
  • New colors for the Light Red and Dark Red minimap markers.
  • Bug #21724: 'none' is now a special case for [unit_type] ellipse

Miscellaneous and bug fixes

  • Units can no longer be moved in linger mode (bug #21450).
  • Changed: Updated valgrind suppression file.
  • Fixed color issues with font_rgb in unit status labels in themes.
  • Labels are now removed when shroud/fog is removed, rather than waiting for a new turn (bug #21434).
  • Percent signs show when describing traits that increase damage or attacks by a percentage (bug #21577).
  • Linux dbus notifications: Only last 5 messages are remembered, and they are displayed with the most recent ones first.
  • Fixed bug #21736: MP create screen always defaulting to top entry.

Version 1.11.10

Add-ons client

  • Fixed faulty add-on _info.cfg files causing the game to display obscure error messages or crash to desktop.
  • Generated _info.cfg files now contain the list of dependencies for an add-on as well (needed by wesnoth_addon_manager).
  • Python wesnoth_addon_manager client:
    • The dependencies= attribute and the [feedback] tag in .pbl files are now properly supported (bug #21189).
    • Generated _info.cfg files now contain the same information as the game's built-in client (type and title were missing).

AI

  • Hang Out Micro AI: default AI [avoid] aspect is now taken into account
  • Fixed problems with several Micro AIs that sometimes produced OOS errors

Campaigns

  • Eastern Invasion:
    • New world map.
    • Rewrote scenario 'Training the Ogres' and renamed it to 'Capturing the Ogres'.
    • Rewrote scenario 'Captured'.
  • Heir to the Throne:
    • Fixed Delfador clobbering whichever unit happens to be standing on 31,11 at the end of The Bay of Pearls, causing it to disappear forever.
    • S15 (The Lost General): fix bug of sighted events firing too early
  • Legend of Wesmere:
    • Fixed missing journey map background in story screens.
  • Liberty:
    • Updated sprites for Shadow Mage line.
  • Son of the Black Eye:
    • Rebalancing of the campaign is now complete
  • Under the Burning Suns:
    • Updated animation WML of all campaign specific units
  • Editor:
  • Fixed: Drawing the offmap area for small resolutions.

GUI2

  • Added: FAI-function handling in GUI2 widgets.
  • Added: A new tooltip window.

Language and i18n

  • Updated translations: Scottish Gaelic

Lua API

  • Config of current era is now available in a Lua table in MP games
  • Config of any era can be requested by id, also a list valid era ids

Multiplayer

  • Fix for bug #21405, in a series of features:
    • The abort option presented to the host when a player disconnects from a networked game is now a "save and abort" option.
    • New Idle controller status: Sides may now be set in an "idle" state by the host when a player disconnects from a network game. This does not give any player control or vision. To proceed with the game, the host must reassign the side's controller using :control, :droid, or :give_control as usual. (give_control existed but was not documented) Related to this, there are new commands :controller which query the controller status, and :idle which toggles the idle status.
    • New "Blindfold Replays" option: Observers may check a box in the lobby so that if they join a game, they will be "blindfolded" and see only a black screen until they are given control of a side.

Units

  • New baseframes for Jundi, Muharib, Batal, Qatif-al-nar, Qudafi, Rasikh.

User interface

  • New UI for displaying errors detected during the core and add-on WML loading process (parser and preprocessor errors), including the ability to copy the report to clipboard.
  • New UI for displaying the notification that a screenshot or map screenshot was successfully saved to disk, including options to open it in an external application, copy the path to clipboard, or browse the screenshots folder.
  • Force grayscale antialiasing for text rendered using Cairo/Pango (e.g. by GUI2) on Windows to work around ClearType-induced glitches (bug #21648).
  • Fixed bug #21584: Properly redraw the minimap when the minimap is resized.
  • Fixed: Enable blurring in the title screen.
  • Added descriptions to the options in Preferences -> Display -> Themes.
  • New sound played to signal the start of an MP game.

WML engine

  • WML loading phase errors are reported to stderr in a new indented format.
  • Implemented [true] and [false] ConditionalWML tags, which describe a condition that always yields true or false, respectively.
  • Fixed: Disallow change and remove sections without an id in the ThemeWML.
  • Added [theme] description attribute for including a description of the theme that will be displayed in Preferences.
  • [theme] name attribute is now expected to be translatable and used only for the theme selection UI. Existing [theme]s need to be converted to have a separate 'id' attribute.
  • [endlevel] now has two optional subtags [next_scenario_settings], [next_scenario_append], which can be used to reconfigure next scenario.
  • Optimizations made to the game events engine. Slower machines may notice an improvement during movement (when enter/exit_hex events are triggered). The optimization is more effective when relatively few events have variables in their names.

Miscellaneous and bug fixes

  • Fixed: A compilation warning with DEBUG_WINDOW_LAYOUT_GRAPHS.
  • Added -Wold-style-cast to the CMake strict flags.
  • Made sure that cmake does not add -NDEBUG for release builds since this flag breaks building.
  • Updated screenshots used inside the ingame help and fixed description of orbs.
  • Fixed bug #21659: lua location_set:empty now works as described
  • Users now get a warning if they start a multiplayer scenario through the title screen load button, as this may cause eras and modifications not to work correctly in subsequent scenarios of an mp campaign.
  • wmllint can now update base terrain aliases in UMC after the changes in versions 1.11.8 and 1.11.9. This conversion is applied to the aliasof, mvt_alias, and def_alias attributes under the [terrain_type] tag.
  • Parser warnings when skipping over Unicode BOMs are now printed in stderr with the file location and substitution trail when available.

Version 1.11.9

Add-ons client

  • Display the first and last upload dates in the Description dialog.

Add-ons server

  • Record the first upload date and time for new add-ons.
  • Removed ancient compatibility code used only for add-ons stored by some 1.5.x versions.

AI

  • Default AI: Gold saving is turned off by default again
  • New macros AI_SAVE_GOLD and AI_SAVE_GOLD_DEFAULT for easy enabling of recruitment gold saving in specific scenarios
  • Wolves Micro AI: new optional parameter attack_only_prey=

Campaigns

  • Heir to the Throne:
    • Gave Li'sar a new ability "initiative" (grants adjacent allies first strike in melee).
  • Son of the Black Eye:
    • Rebalancing of the campaign continues and is done for Scenarios 1 (End of Peace) through 12 (Giving Some Back). In addition, the following not directly balance related changes have also been made:
    • S3: remove AI controller right-click menu option
    • S4 & S9: make AI attack enemies 1 XP from leveling so that it is not possible to block key locations with such units
    • S10 & S12: don't give huge unannounced gold bonus to AIs

Editor

  • Added Impassable Overlay and Unwalkable Overlay terrains to the obstacle group.
  • Added Snowy Human City village terrain to the frozen group.
  • Added Cave Path terrain to the flat group.
  • Added Dry Hills terrain to the fall group.

Language and i18n

  • Updated translations: Dutch, Portuguese, Scottish Gaelic

Lua API

  • Added wesnoth.set_dialog_markup function (patch #2759).

Multiplayer

  • Updated map: Ruins of Terra-Dwelve.

Terrains

  • Made Snowy Encampment, Snowy Orcish Castle, Snowy Encampment Keep and Snowy Orcish Keep aliases of both castle and frozen terrains

Units

  • Decreased the strikes of the Dwarvish Lord's hatchet attack from 2 to 1.
  • Fixed subtle magenta TC for the Giant Mudcrawler sprites not being enabled in-game.

User interface

  • Restored the old control scheme as the default
  • Fixed hidden variations of unit types (hide_help=yes) being listed in the help browser when they shouldn't.
  • Gray-out GUI1 scrollbar upwards scrolling button by default when starting with the view scrolled to the top.
  • Truncate long Advanced Preferences entries with ellipses to avoid situations where the listbox is wider than the Preferences dialog frame (bug #19482).
  • Team color is now applied on the Unknown unit icon in the game Status Table regardless of whether the side's leader unit supports team color.

Miscellaneous and bug fixes

  • Added -Wno-documentation-deprecated-sync to the CMake pedantic flags.
  • Fixed several Doxygen issues found by Clang 3.4.
  • Fixed possible invalid memory access issue in the MP sides configuration code causing crashes for some users (bug #21449).
  • Fixed broken image references in the Gameplay -> Time of Day help topic.
  • The internal variables used by the LIMIT_RECRUITS WML macro are now cleared on victory.
  • Fixed missing log error message for invalid music tracks set with play_once=yes (bug #21479).
  • Don't force the .gz suffix on every entry of the save_index (bug #20849).
  • Fixed a bug in [filter_vision] in SUFs that caused a hidden unit under fog/shroud to produce a false positive.
  • A lack of ToD schedule no longer causes segfaults (bug #21489).
  • SLF work again when x XOR y is specified (bug #21488).
  • Selecting off-map hexes, then hovering over a unit no longer causes the game to crash (bug #21351).
  • Changed: Added -Wextra-semi to pedantic compilation.
  • Changed: Added -Wconditional-uninitialized to pedantic compilation.
  • Fixed NULL pointer dereference when viewing units in the Recall Unit dialog including nonexistent/unreadable images in their overlays, while not in debug mode.

Version 1.11.8

Add-ons client

  • Introduced new add-on type "SP/MP Campaign" for campaigns with "type=hybrid."
  • Fixed invalid file size data from the server crashing the client on the network transfer progress dialog (bug #20893).
  • Added support for specifying a feedback page URL in the .pbl file when publishing an add-on, currently intended for associating add-ons in the official add-ons server with topics from forums.wesnoth.org; this is achieved by including a [feedback] block with a topic_id= key in it.
  • Redesigned Add-ons Description dialog, including support for displaying add-on feedback page URLs.

Add-ons server

  • Fixed mishandling of inaccessible add-on packs resulting in multiple data conversion errors and stalling clients (bug #20893).
  • Added support for managing and emitting add-on feedback page URLs to clients ([server_info] feedback_url_format option in the server configuration file).

AI

  • RCA AI: fix bug #21334: surrounded units don't attack
  • Coward Micro AI: new optional parameter [filter_second]
  • Simple Attack Micro AI: new optional parameter weapon=
  • Wolves Micro AI: fix bug that sometimes kept predators from attacking
  • Lua AI: new replay-safe action ai.synced_command()
  • ai.cfg: fix MEDIUM to NORMAL in attack_depth macro

Campaigns

  • all: convert many wmllint magic comments from "recognize" to "who" and "whofield",
  • Dead Water:
    • New world map.
  • Delfador's Memoirs:
    • Updated sprite and animations for the Wose Shaman.
  • Descent into Darkness:
    • S3: set aggression=1 for Side 4 to avoid wrong choice of attack
  • Eastern Invasion:
    • Made Dacyn use teal TC and Mal-Ravanal blue TC, to make them fit the portraits more.
    • Updated maps for scenario 1-7.
  • Heir To The Throne:
    • Increased Li'sar's lvl3 hitpoints from 52 to 62.
    • Implemented the portrait variations for Delfador and Asheviere.
    • Changed Kaylan's portrait and gave him teal team coloring.
    • Changed the flaming sword so it's now a 25% increase to damage, instead of changing the damage to 15-4
    • Added a new mechanic to Sceptre of Fire. By standing still for a turn, Delfador can now tell the player the shortest path to the Sceptre.
    • Fixed Konrad's level 1's attack animation giving an 'image not found' error.
    • Fixed Konrad's dying words event.
  • Legend of Wesmere:
    • S9: set aggression=1 for Side 4 to avoid wrong choice of attack
  • Liberty:
    • New world map.
    • S5: set aggression=1 for Side 3 to avoid wrong choice of attack
  • Northern Rebirth:
    • S5a: dialogue tweaks
  • The Rise of Wesnoth:
    • New world maps.
    • Redesigned scenario 'A New Land'.
  • The South Guard:
    • S6a: fix ogre's last words event
    • S6b: set aggression=1 for Side 2 to avoid wrong choice of attack
  • Son of the Black Eye:
    • Rebalancing of the campaign continues and is mostly done for Scenarios 1 (End of Peace) through 8 (Silent Forest). In addition, the following not directly balance related changes have also been made:
    • S1: the AI enemy can now also recruit bowmen
    • S4: give the player control of the Side 3 orcs in the center castle
    • S6: unload units from transport galleons preferentially onto land hexes
    • S7: use Simple Attack Micro AI to have scorpions spread poison
    • S8: use Healer Support Micro AI for elvish healers
    • S16: Kapou'e gets his own castle at the start of the scenario to eliminate dependence on luck during the first turn
    • S17: add a warning that the AI will receive reinforcements
    • S18: no linger mode at the end of the last scenario
    • Minor updates to messages (grammar and prose) and objectives.
    • Updated sprites and animations for the Orcish Shamans.

Graphics

  • New and updated animations for the Loyalist Horseman.

Language and i18n

  • Updated translations: Catalan, Chinese (Traditional), Dutch, Galician, Japanese, Latin

Lua API

  • Added flag, flag_icon, and village_support fields to wesnoth.sides table elements.
  • Made wesnoth.sides[n].hidden a read-write field.
  • New lua proxy table "wesnoth.game_config.mp_settings" for access to MP specific settings, such as era, scenario name, and timer

Multiplayer

  • Unit names and genders are synced in MP games.
  • Added new CampaignWML attribute "require_campaign". If set to "yes", players not having campaign installed won't be able to join the game.
  • New eras: the Default+Khalifate and Age of Heroes+Khalifate eras are now available.

Replays

  • Replays include the prestart and start events again.
  • Unit names and genders are synced between games and replays.
  • Play/stop buttons are disabled again at the end of a replay.
  • The 'reset replay' button works correctly and does not cause OOS errors any more.

User interface

  • Removed the possibility to undo unit recruits because it caused oos.
  • Added a party full bell to the MP game configuration screen, played once all human player slots have been taken.
  • Change layout for advertized games in the MP lobby and add map icon.
  • Moved color cursors option to Advanced Preferences.
  • Always hide and disable color cursors option on Mac OS X since it's known to cause severe lags that render the cursor unusable.
  • Unit overlays are now displayed in the Recall dialog, both on the list and the description panel.
  • Made filtering controls on the MP create screen functional.
  • Removed the MP custom options dialog; all options are now shown directly on the configuration screen.
  • Removed the MP modifications dialog; modifications are now displayed directly on the creation screen.
  • The "Compressed saves" and "Compress savegames using bzip2" options in Preferences -> Advanced have been replaced by a single option, "Compressed saved games", that lets the user pick between gzip (default), bzip2, and no compression. Users who previously enabled bzip2 compression will need to do so again.
  • Hide eras menu in MP Create for campaigns which have "allow_era_choice=no".
  • Introduced side's name in MP Connect.
  • Middle click scrolling is now based on distance from initial click instead of the centre of the screen.
  • Make sliders able to be scrolled with the mouse wheel
  • Allow advanced preference booleans and mp modifications to be toggled via double click
  • Fixed slight scrolling glitches with credits sections with multi-line headers (e.g. those generated for campaigns with multi-line titles).

WML engine

  • WML variable turn_number is set correctly (to 1) in prestart and start events. Previously, it retained its last value from the previous scenario until after the start event.
  • [scroll_to] and [scroll_to_unit] now take an optional side filter.
  • [trait] now accepts a "generate_description=" attribute, allowing the auto-generated effect descriptions to be turned off.
  • [modify_side] can now change a side's flags and status bar icon using the "flag" and "flag_icon" attributes also accepted in [side] definitions (bug #18454).
  • [store_side] now stores the "flag", "flag_icon", and "village_support" attributes from sides.
  • New macros RECALL and RECALL_XY

Miscellaneous and bug fixes

  • Pango markup is applied correctly and consistently in button tooltips.
  • Fixed mishandling of invalid Pango markup resulting in previous messages being displayed instead in e.g. [message] (bug #20996).
  • Added wmllint code for recognizing unit id fields in macros, added non-attribute lines to local_sanity_check, added unknown speaker check.
  • Refactored code in wmltools to create a macro-parsing function.
  • Added era descriptions.
  • Fixed file chooser dialog (used in the map editor and for locating the wesnothd executable) interpreting special markup at the beginning of file names such as "#foo.map".
  • Fixed bug with modifications dependency check dialogs (bug #21365)
  • Fixed bug with scrollbar overlaying mp description text (bug #21364)
  • Fixed bug with help units not making links (bug #21339)
  • Split command line option --config-dir into --userconfig-dir and --userdata-dir, with --userconfig-dir defaulting to --userdata-dir's value on some platforms.
  • The color_adjust_blue_ attribute in [display] tags of saved games has been renamed to color_adjust_blue. Since it is only non-zero following a [color_adjust] action in a WML event, only mid-scenario saved games created with previous versions may present minor color issues after this change.
  • Fixed sound sources removed while the sound effects volume is zero (either in Preferences -> Sound or through the [volume] WML action) persisting and escaping the sound source management code (bug #21426).
  • The negative sign is no longer dropped when formula AI prints numbers between 0 and -1.

Version 1.11.7

Add-ons client

  • Add-ons downloaded with clients from this version onwards are shown in the Remove Add-ons with their original titles from the add-ons server now, instead of artificially generating titles by replacing underscores from file names.
  • Fixed color key disparities between the Add-ons Manager dialog and the add-on Description dialog.
  • It is now possible to choose the neutral/fallback add-on sorting in the Add-ons Manager dialog used when no columns have been sorted by the user.
  • Report errors caused by faulty local .pbl files properly instead of presenting them as network errors.
  • Fixed regression from 1.11.0 resulting in memory leaks and/or crash-to-desktop situations when failing to connect to an add-ons server.

Add-ons server

  • Implemented read-only mode option (read_only boolean attribute in server config WML, defaults to "no").

AI

  • Recruitment CA:
    • New Recruitment CA located in src/ai/recruitment is now default CA
    • Created new AI cfg "Strong AI (RCA)" with stronger recruitment
    • Created new AI cfg "Old Recruitment CA" in ai/dev/ to use the old CA
  • External CAs are now fully usable
    • The persistent data variable works and is accessible across CAs
    • Parameters can be passed to eval/exec functions
  • Micro AIs:
    • New Simple Attack Micro AI
    • All MAIs changed to using external CAs. This means that no engine definitions are needed any more and that MAIs can be combined at will
    • Got rid of animal_type=, guardian_type=and recruiting_type= keys. The individual Animal, Guardian and Recruiting MAIs are now separate AIs that are selected with the ai_type=key
    • Patrol, Guardian and Hunter MAIs are now side-wide CAs (not BCAs) and support either the id= key or [filter] tag for unit selection
    • Messenger MAI now works with units (both messenger and escort) without weapons and when path to next waypoint is entirely blocked
  • Experimental AI:
    • Added new CAs Retreat, Move to Enemy and Village Hunting
    • Algorithm improvements for several CAs
  • Fixed time_of_day aspect so it matches time-of-day ids, not names (e.g. "Morning" vs "morning"), so most use cases of ToD-dependent AI configuration work again (suspected version 1.7.4 regression).
  • Move_Leader_To_Keep CA will now move all leaders back to a keep (multiple leader support for recruitment)
  • Refactored the AI-Test-Suite completely (/utils/ai_test/)
  • Changed AI descriptions in ai/dev/ displayed in MP computer player menu
  • New macro AI_CONTROLLER_ALLOW_UNIT_CONTROL
  • Remove macro RCA_STAGE

Campaigns

  • A Tale of Two Brothers:
    • Crop campaign icon to fit campaign selection dialog (fixes bug #20935)
  • Dead Water:
    • Converted animation WML to the new syntax
  • Delfador's Memoirs:
    • Converted animation WML to the new syntax
  • Descent Into Darkness:
    • Converted animation WML to the new syntax
  • Eastern Invasion:
    • Converted animation WML to the new syntax
  • Heir To The Throne:
    • Converted animation WML to the new syntax
    • Gave Moremirmu a matching holy sword attack icon (bug #21248).
  • Legend of Wesmere:
    • Removed now redundant MP code.
    • Added new CampaignWML attributes: "type", "min_players", "max_players".
    • Added new ScenarioWML attributes: "new_game_title", "force_lock_settings".
    • Adjusted "controller" and side recruits for MP.
    • Now uses default recruitment instead of experimental FAI-recruitment in 02_Hostile_Mountains.
  • Liberty:
    • New AI for wolf riders in "The Raid"
    • Converted animation WML to the new syntax
    • Gave the Death Squire the submerge ability.
    • Increased the Death Squire's blade resistance from 10% to 40%, pierce resistance from 30% to 60% and lowered its impact resistance from -10% to -20%.
    • Greatly decreased the Death Squire's HP from 66 to 44.
  • Northern Rebirth:
    • S5a: added dialog for dungeon signpost moveto
  • Sceptre of Fire:
    • Converted animation WML to the new syntax
  • Son of the Black Eye:
    • Rebalancing of campaign started to make it more difficult in accordance with its status as an expert level campaign. Scenarios 1 - 3 done so far. In addition, the following, not directly balance related changes have also been made:
    • S3: scenario now ends after dwarf leader is killed (no need to continue to the signpost any more)
    • S3: add possibility to give Grüü instructions
    • S6: new Lua AI code for the transports with somewhat different behavior
    • S14: Kapou'e cannot recruit troll whelps any more (this scenario only)
    • S14: "It is now Grüü's turn" displayed correctly on Side 4 turn
    • S16: fix recalling of alternative units if Jetto/Inarix have been killed
    • S18: Howgarth's death now results in defeat, as stated in objectives
    • S18: Shan Taum death dialog shown correctly if Kapou'e kills him himself
    • Minor updates to many messages, objectives, moves, AIs etc.
    • Message images that would cover the speaker moved to the right
    • Converted animation WML to the new syntax
  • The Hammer of Thursagan:
    • Converted animation WML to the new syntax
  • The Rise of Wesnoth:
    • Converted animation WML to the new syntax
  • The South Guard:
    • Converted animation WML to the new syntax
  • Tutorial:
    • Converted animation WML to the new syntax
  • Under the Burning Suns
    • Fixed several bugs with missing/incorrect dialog
    • Azkotep now correctly possesses Garak if only his champion is killed

Engine

  • CampaignWML support for MP including difficulties, extra defines etc.
  • Use the same codepath to initialize every MP campaign's scenario, thus allowing the display of a functional MP "Connect/Wait" screen before the next scenario.
  • Reload game config for non-host players in order to match the host's config, if possible. Reloads will only happen for MP campaigns using CampaignWML syntax.
  • Imagepath function "~ROTATE": Support for rotating by any degree.

Graphics

  • Full animations for the Dwarven Thunderer line.
  • New standing animation for the Dwarvish Berserker.
  • New north-facing standing and attack animations for the Loyalist Spearman.
  • New ranged attack animations for the Dark Adept line.

Language and i18n

  • Updated translations: British English, German, Greek, Indonesian, Italian, Korean, Lithuanian, Portuguese, Vietnamese
  • Improved internationalization of notifications on Windows and OS X.
  • Introduced translations for months and weekdays, which are used when user does not have locale installed.
  • Show am/pm designations, if required, even when locale doesn't support them.

Lua API

  • Added scroll_to_leader field (read/write) to wesnoth.sides table elements.

Multiplayer

  • Fixed clearing map data when there is no shroud and level is sent with "store_next_scenario".
  • Update game's side data, slots and state in server during next scenario initialization.
  • Fixed reserved sides being counted as available in server.
  • Added "controller_lock" in SideWML. The lock provides a way to be sure that sides will be played with a controller which was assigned in WML. I.e. if "controller" was set to "ai", it won't be possible to select any other controller for a side. However, if "controller" was set to "human", it will still be possible to assign any player, local, network or reserved (if applicable) controller.
  • All multiplayer locks in SideWML (e.g. "team_lock"), now uses "force_lock_settings" as their default value.

Unit changes and balancing

  • Gave the Death Knight the submerge ability.
  • Increased the Death Knight's blade resistance from 10% to 40%, pierce resistance from 30% to 60% and lowered its impact resistance from -10% to -20%.
  • Lowered the Death Knight's HP from 66 to 63.
  • Lowered the Chocobone's hills defense from 50% to 40%, mountain defense from 60% to 50%, fungus defense from 60% to 40%, forest defense from 50% to 30%, and village defense from 60% to 40%.
  • Increased the Chocobone's melee damage from 9-2 to 11-2.
  • Increased the Chocobone's blade resistance from 10% to 20%.

User interface

  • Players can now assign hotkeys to wml menu items in the preferences menu.
  • Help Browser:
    • Units with variants are shown as sections with their childs as topics.
    • Links to the siblings in unit variants.
    • Links to the base unit of none variants.
  • MP "Create" screen has been revamped by moving scenario configuration widgets to a new MP "Configure" screen, introducing a description box, adding a combo selection for different types of game, and adjusting it to work well with MP campaigns.
  • MP "Configure" and "Connect" screens have been adjusted to allow to see all scenarios and sides in the debug mode.
  • MP "Lobby" game item has been updated to display information about campaigns correctly.
  • In-game Chat Log dialog now supports text search on timestamps, nicks, and messages.
  • Possible fix for clipboard integration issues with GUI2 widgets on X11.
  • Fixed potential misbehavior (including invalid memory access) from the tray notifications code on Windows.
  • New Game Paths dialog displaying filesystem locations used by the game to read or write data, accessed from Preferences -> General.

WML engine

  • New [disable] weapon special.
  • New variation_id attribute with the function of former variation_name.
  • variation_name is now the translatable name of the unit variant.
  • The "variation=" attribute works now in [unit_type] and serves as the default variant.
  • [store_side] now stores the scroll_to_leader attribute from sides.
  • Added new CampaignWML attributes: "type", "min_players" and "max_players".
  • Added new ScenariowML attributes: "new_game_title", "remove_from_carryover_on_leaders_loss" and "force_lock_settings".
  • Allow numerical values for SideWML "controller" attribute.
  • Allow WML menu items to use hotkeys alongside/instead of the menu.
  • Really added sighted events for ambushing units.
  • [scroll] now takes an optional side filter.
  • Some support for negative healing. This is not guaranteed to work correctly in all cases, but it does restore the basic functionality that was (probably accidentally) in 1.10.
  • Overhaul of the game events engine. Fixes some obscure bugs, like #21031, and grants feature request #18713.
  • Added new set_icon attribute for [effect] apply_to=attack.
  • New attribute in [unit_type]: healed_sound. These attributes allow for customization of the sounds played when the unit is healed.

Miscellaneous and bug fixes

  • Added -256 and -512 color shifts to FADE_TO_BLACK and FADE_TO_BLACK_HOLD macros to account for ToD color shifts greater than -31, guaranteeing complete darkness.
  • Unit WML frames with image modifications are now shown correctly for hits/death.
  • Fixed compare_images.py (called by wesnoth-optipng) and pofix.py to function with python-3.2.
  • Refactored and split the MP "Create" and "Connect" screens' code into gui and engine parts.
  • Lock faction, leader, and gender selections in MP "Connect" if default values are provided and "force_lock_settings" is set to "yes".
  • Fixed runtime error due to mismatched function call conventions in set_preferences_dir() when built with MSVC++ 2010 and a relative path to My Documents was passed with --config-dir in the command line.
  • Changed: Added -Wno-deprecated-register to strict compilation.
  • Added command line option "--multiplayer-repeat ". A game started with --multiplayer will be repeated times. This is useful for batch testing.
  • Animation WML: Fix sound start time in additional frames without requiring a duration 1 frame workaround.
  • Animation WML: Fix halo in additional frame persisting without blank hex workaround at start and end if a shorter frame.
  • New MISSILE_FRAME_FIREBALL_XY macro, used in red mage line.
  • Fixed crash on delete of last save.
  • The MISSILE_FRAME_MUZZLE_FLARE_MISS macro nowrequires an X and Y argument.
  • Added placehoder attack animations to the Fire Dragon.
  • New MISSILE_FRAME_CHILL_WAVE and MISSILE_FRAME_SHADOW_WAVE macros, used in the dark adept line.
  • New knife sound for thunderer line.
  • Fix bug #20936 with shuffle sides and incorrect initial side villages.
  • Fix bug #20564: crash of replays of games started from scenario start save
  • Fix bug #20124: animation not updated on [un]petrifying units with WML tags
  • Fix bug #21264: Loading a turnsave in campaign sets negative gold to 0
  • Fix unreported bug of Wesnoth sometimes crashing on killing unit under cursor from context menu in debug mode

Version 1.11.6

Add-ons client

  • The Description popup displays the selected add-on's dependencies now, using color-keyed statuses.
  • Circular dependencies are no longer treated as erroneous in terminal output.

AI

  • Micro AIs:
    • New Hang Out Micro AI
    • Any number of Micro AIs can now be combined on the same side
    • Goto MAI: new parameters avoid_enemies=, ignore_units= and ignore_enemy_at_goal=
    • Goto MAI: [filter] is now an optional parameter
    • ca_id is now an optional parameter for all MAIs
    • ca_score is now an optional parameter for almost all MAIs
    • Bug fixes for Patrol, Messenger, Multipack Wolves and all Guardian MAIs
    • [goal] tags in [ai] blocks with turns= or time_of_day= will now work.

Campaigns

  • An Orcish Incursion:
    • New world map.
  • Descent Into Darkness:
    • New world map.
  • Legend of Wesmere:
    • convert to "wmllint: who" magic comments
  • The South Guard:
    • Fixed double "lich found" event in Choice in the Fog

Language and i18n

  • Updated translations: Galician, Japanese, Lithuanian, Russian, Scottish Gaelic

Lua API

  • Added: function wesnoth.find_cost_map().

Units

  • Added description for the Wose race.

User interface

  • Unit ellipses are now automatically updated if a unit gains or loses its ZoC

WML engine

  • If [recall] cannot find a unit to recall, the message is logged at the "info" severity level in the "wml" domain (instead of the "error" level in the "engine" domain). This means the message will be suppressed by default.
  • Allowed [modify_side] to modify the scroll_to_leader key

Miscellaneous and bug fixes

  • Creating a unit via debug mode now clears fog/shroud around the unit.
  • [move_unit_fake] now accepts an optional force_scroll= attribute (def. to 'yes') that allows scrolling the viewport even when [lock_view] is in effect or Follow Unit Actions is disabled in Advanced Preferences.
  • [move_unit] accepts an optional force_scroll= attribute like [move_unit_fake] above, defaults to using the [move_unit_fake] default.
  • Added: Feature in pathfind.xpp to build a cost map.
  • wmllint: turn on globbing on Windows, create "who" and "unwho" magic comments, bugfixes
  • wmllint-1.4: add an enhanced and bugfixed version of wmllint 1.4 for porting old add-ons

Version 1.11.5

Add-ons client

  • Do not bump the download count for add-ons that are currently installed and are being reinstalled or upgraded

Add-ons server

  • Restricted names (not titles) for newly uploaded add-ons to ASCII hyphens, underlines, and alphanumerical characters. Previously uploaded add-ons are exempt from this change.

AI

  • New macro EXPERIMENTAL_AI for using Experimental AI in both SP scenarios and MP maps
  • Recruiting in Micro and Experimental AIs: allow more terrain codes for castles/keeps
  • Improved/Added: Command 'lua wesnoth.debug_ai([side]).ai' will now give access to the ai-table of [side].
  • Improved AI behavior when using goto_x / goto_y in WML
  • Micro AIs:
    • Zone Guardian: Add optional station_x,station_y= keys
    • Goto: don't exclude leader by default
    • Bug fixes in Return Guardian, Healer Support and Goto MAIs
  • Experimental AI: fix bugs that disabled recruiting for some UMC weapon specials

Campaigns

  • All:
    • replaced deprecated aspects with [goal] aspect
  • Heir to the Throne:
    • Updated Li'sar's movetype and resistances to match her armor.
  • Legend of Wesmere:
    • Scenario 05: Elvish Horse Archers can now carry the treasure
    • Scenario 09: the player's loyal units stay in the recall list, instead of being stored and then unstored in scenario 14
  • Under the Burning Suns:
    • Scenario 8 (Out of the Frying Pan): Fix messenger AI (Lua errors and wrong goal)

Engine

  • Made game config loading more modular by extracting appropriate functionality from game controller and adding it to a new class. Wrapper functions for editor's and game's config loading were added.

Graphics

  • New scorpion baseframe (replaces old image set)
  • New skeletal dragon baseframe (replaces old image set)
  • New cavalryman line baseframes (replaces old image set)
  • New elven cavalry units baseframes (replaces old image set)
  • New paladin, knight, grand-knight, lancer baseframes (replaces old image set)
  • New giant mudcrawler baseframe and animations (replaces old image set)

Language and i18n

  • Updated translations: French, Galician, Latin, Lithuanian, Old English, Portuguese, Portuguese (Brazil)

Lua API

  • location_set.of_pairs() now can take coordinates defined by x/y= keys as well
  • Fixed the x1,y1 variables in enter/exit_hex events handled via wesnoth.game_events.on_event.

User interface

  • Added notification support for Windows
  • Made it so that the "Back to Turn X" and "Back to Start" menu items work with .bz2 saves
  • Removed Dfool and Experimental themes
  • Major visual overhaul:
    • Most UI elements have new images
    • Button sizes have been standardized; regular buttons are 108x22 (H22), menu buttons are 100x20 (H20), square buttons are either 25x25 or 30x30 depending on purpose.
    • Regular and menu buttons are now in subdirectories of images/buttons/
    • Button icon overlays are now in images/icons/
    • Icons can now be overlaid on a team-colorable base provided in images/buttons.
    • New team color ranges have been introduced for this purpose.
  • Added possibility to kill unit under cursor with context menu in debug mode.

WML engine

  • Added new aspect 'advancements' which with lua engine can handle a function return type of the form f(x, y) -> String. 'advancements' tells the AI to what unit a given unit should advance to.
  • Fix "Shuffle sides" incorrect behaviour: children inside [side] were also swapped.
  • Fixed incorrect image path function name in error messages generated by using ~CROP() with negative coordinates.
  • Fixed abilities sometimes affecting self during movement even when they are flagged as not affecting self (bug #20755).
  • Added deprecation messages to aspects [target], [protect_unit], [protect_location], protect_leader=, protect_leader_radius=
  • Fixed bug #20836: advancing units can fire events in [harm_unit] if fire_event=yes
  • Advancing units can be animated by [harm_unit] if animate=yes
  • Added deprecation message to aspect [goal] when using "name=protect_my_unit".

Miscellaneous and bug fixes

  • Fixed minor issue with Drake Clasher animations
  • Added a new playlist FULL_MUSIC_PLAYLIST, which contains all Wesnoth tracks in alphabetical order
  • Added -Wno-null-conversion to the CMake pedantic flags.
  • Changed: Decreased the pango cairo dependency to version 1.21.3.
  • Changed: Mark system headers as system headers in CMake.
  • Fixed the recall list sometimes getting confused when dismissing a recall.
  • Prevent unchecked memory access in cut_surface()
  • Remove game controllers: new and abstract. Were never properly implemented.
  • Remove --new-syntax command line option. Was never properly implemented.
  • Several wmllint additions: remove backslashes and userdata/ from paths, convert data/campaigns/ to data/add-ons/, give more detailed message for color spec to Pango fix-up, delete files on Windows before rename.

Version 1.11.4

AI

  • Reverted new Lua AI persistent storage mechanism for external CAs that would crash Wesnoth under certain circumstances in 1.11.3. This will be re-committed in an upcoming release.
  • Micro AIs
    • Healer Support MAI now respects RCA AI [avoid] aspect.

Version 1.11.3

AI

  • Micro AIs
    • New Goto and Zone Guardian MAIs
    • Change SUF/SLF names to [filter]/[filter_location] and variants thereof
    • Add optional SUF to Healer Support MAI

Campaigns

  • Descend into Darkness:
    • Fix the surviving orc leader starting poisoned after scenario 5.

Language and i18n

  • Updated translations: Chinese (Traditional), Indonesian, Italian, Polish, Portuguese, Russian, Vietnamese

User interface

  • Fixed 'end turn' button's state in MP and title2 issues.
  • Fixed (bug #17220): Cursor in gui2 text box now behaves appropriately after text box overflow occurs.
  • Change Difficulty checkbox in Load Game dialog in GUI1 gets disabled if change in difficulty of a loading game won't take effect (bug #20381).
  • Fixed 'end turn' button's state issue: button stays disabled after the first turn.
  • Fixed bug #20592: dialog (wml_message.cfg) is shifted by the distance between the left edge of the screen and the game map
  • Overhaul of the editor's gui

WML engine

  • Fixed invalid memory access issues caused by subnamespaced persistent WML variables (bug #20385).
  • fix negative gold carried over (bug #20676)
  • Allow filtering on controller= in SSFs. Cannot be used in networked multiplayer.
  • When controller in 'side' tag is ai, use 'no' as default value for 'allow_player' attribute.

Miscellaneous and bug fixes

  • Switched to git version control. Hosting moved to SourceForge
  • Improved: Autorevision based revision numbers in CMake.
  • Don't let petrified units reveal ambushers

Version 1.11.2

Add-ons client

  • Fixed bug #20518: identical add-ons titles not supported
  • Add a button to the Filter Options dialog to toggle all currently displayed add-on categories at once

AI

  • Experimental Multiplayer AI
    • Improve recruitment, notably first turn choices and units with poison and charge
    • Improved selection of units for village stealing
    • Remove dependency on AI-demos add-on
    • Fix bug when playing on maps with a turn limit
    • Fix bug handling regeneration
    • Minor improvements in switching between castles
    • Add healer support micro AI to improve healer use
    • Improved village capturing
    • Retreat badly injured units more effectively
  • New [micro_ai] tag, 18 different Micro AIs, and 14 test scenarios
    • This includes AIs for 7 different animal behaviors, bottleneck defense, 2 different guardians and a coward, healer support, lurkers, messenger escort, patrol, protect and move a unit, and 2 alternative recruiting strategies.
    • Documentation at https://wiki.wesnoth.org/Micro_AIs
  • New leader_ignores_keep AI aspect that lets AI leader take part in the same AI moves as the non-leader units.
  • Rename passive_leader_shares_keep candidate action to leader_shares_keep. The old syntax still works for backward compatibility (for both CA and macros).
  • Fix minor bug in leader_shares_keep candidate action that occurred under some circumstances when the AI leader does not have full MP

Campaigns

  • Sceptre of Fire:
    • Allow game to continue after completing scenario (reported in forums)
  • Son of the Black Eye:
    • Prevent infinite loop if fewer than two transport ships (bug #20389)

Graphics

  • New bigmaps for the title screen and campaigns HttT, TSG, SoF and SotBE
  • Fix layering error with bridges

Language and i18n

  • Updated translations: British English, Chinese (Traditional), Dutch, Estonian, French, Galician, German, Italian, Japanese, Latin, Lithuanian, Portuguese, Portuguese (Brazil), Slovak, Vietnamese

Lua API

  • new wesnoth.get_time_stamp() function
  • new helper.shuffle() function
  • The wesnoth.transform_unit() function no longer performs a full heal. It will (still) enforce the resulting unit's maximum hit points, though.
  • The wesnoth.transform_unit() function will automatically remove poison from a unit that is immune after transforming.

Multiplayer

  • Moved new lobby option in Preferences -> Multiplayer to Advanced Preferences and clarified description
  • MP command-line mode now works correctly, including replays, random maps and default values (bugs #19853, #19877, #19883, #19895 and #20009)
  • New --ignore-map-settings MP command-line option
  • Fixed some issues with Dark Forecast skipping spawns and failing to end.

User interface

  • Allow copying the selection in the old (default) lobby using Ctrl+C/Command+C (bug #5877)
  • Color coded the resistance table in the hp display's tooltip.
  • Scale down unit baseframes larger than 72x72 in the Recruit and Recall dialogs to prevent all list entries from being enlarged to fit
  • Tooltip for the movement points display shows the movement costs.
  • Updating the shroud after delaying shroud updates is done gradually instead of instantly.
  • Fixed (bug #18970): Moving a unit after closing a click dismiss dialogue.
  • Increased bottom padding for story screen text when it reaches the bottom of the screen.
  • Fix viewport centering issues with actions such as the Next Unit command, and the [scroll_to], [scroll_to_unit], and [message] WML actions (bug #18793).
  • Removed the "move unit to hexfield" feature.
  • Rearranged :inspect dialog elements to provide the data visualization panel with more horizontal space.

WML engine

  • [unit_overlay] and [remove_unit_overlay] now return a more meaningful error message if the image= key is missing
  • When not replacing values, [effect] apply_to=defense will now modify absolute values instead of signed values (bug #20242). This allows for cleaner WML when the unit type is not necessarily known in advance.
  • Split the 'not_living' unit status into 'unpoisonable', 'undrainable' and 'unplagueable'. 'not_living' now acts on the whole group
  • The bugs with sighted events have been resolved.
  • A unit's maximum hit points are more regularly applied. This affects [transform_unit], [effect]apply_to=type, and [effect]apply_to=variation.
  • Poison is automatically removed from immune units after using [effect]apply_to=type or [effect]apply_to=variation.
  • Fixed bug #20401: [remove_unit_overlay] did not work when the image used an image path function that took multiple parameters.
  • Refactored [base_unit] to be more robust in oddball cases.
  • Improved support for setting id= within a [variation].
  • Added support for square bracket expansion in animation strings I.E halo="pic[1-2,5]:[10,20,30]" expands to halo="pic1:10,pic2:20,pic5:30" this is used for halos, team flags, animated terrains and unit animations
  • Changed default unit halos and macros to use new square bracket expansion
  • Fixed bug #20468: Update the owned villages when using [replace_map].
  • Changed [vision_costs] to default to movement costs on a per-terrain basis.

Miscellaneous and bug fixes

  • The undo stack is preserved across a save-reload.
  • Removed several unused private member variables.
  • Fixed the present in-game command line autocompletion feature so it actually works without using :debug
  • Removed recognition of the --smallgui command line option, which has been superfluous since 1.9.5.
  • Made wmllint recognize victory_string, defeat_string, gold_carryover_string, and notes_string (all from the [objectives] tag) as attributes that need to be made translatable
  • Added -Wdocumentation to the CMake pedantic flags.
  • Make drakes fly on volcano tiles (bug #20485).
  • Added a FOREACH macro to emulate C++11 for(... : ...) style loops.
  • Fixed bug #20290: No longer terminate due to a corrupt savegame.
  • Fixed bug #19970: No longer terminate due to corrupt preferences.
  • Changed: Increased the pango cairo dependency to version 1.24.4.
  • Fixed a display artifact (halos not cleared) when WML moves a unit.
  • Improved the display of vision costs in the unit help.
  • Fixed wmllint, wmlscope and wmlindent not working correctly on Windows if a command line argument ends with a backslash
  • Fixed: Compilation with CLang 3.2 and libc++.
  • Added: Autorevision based revision numbers in CMake.

Version 1.11.1

AI

  • New AI: Experimental AI
    • Improved recruitment, castle and village management over current default AI

Campaigns

  • Dead Water:
    • Removed duplicated loyalty overlay (that now is in core), and used {IS_LOYAL} macro
    • Stunned units are now marked with a status icon
  • Delfador's Memoirs
    • Add dummy side to cutscene to avoid crash at end of story part (bug #20208)
  • Eastern Invasion:
    • New set of portraits
  • Legend of Wesmere:
    • Scenario 02: Replaced the moveto events for checking the dwarvish borders with enter_hex events
    • Scenario 08: Add dummy side to cutscene to avoid crash at end of story part (bug #20208)
  • The Rise of Wesnoth:
    • Fix bug #16772: AI won't attack
  • Under the Burning Suns:
    • Keep a spawned unit from disappearing on reload in scenario 6b
    • Stunned units are now marked with a status icon
    • Fix bug #19303: dwarf sometimes spawns in cave wall

Graphics

  • New portraits: Tentacle of the Deep
  • Updated brown lich alternative portrait
  • Fixed glitches caused by larger-than-hex standing units with certain frame image effects when image= is not explicitly specified (bug #20099)
  • Fixed standing unit animation glitches caused by [move_unit_fake] on adjacent locations (bug #20098)
  • The special ellipses for leader and hero units now support team coloring.

Language and i18n

  • New translation: Scottish Gaelic
  • Updated translations: British English, Chinese (Traditional), Croatian, French, Galician, German, Hungarian, Italian, Latin, Lithuanian, Polish, Portuguese (Brazil), Russian, Slovak, Ukrainian

Lua API

  • new wesnoth.have_file() function
  • wesnoth.get_time_of_day() now works when specifying a turn when the number of turns is unlimited

Multiplayer

  • Silver Mage no longer allowed as a leader in Age of Heroes
  • Added support for modification tags
  • Added support for dependencies between eras, scenarios and modifications
  • New [options] tag to allow MP add-ons to add their own settings on the game creation screen

Networking

  • Handle an exception in the SDL_net-based network code (bug #20205)

Terrains

  • Added Unwalkable Overlay terrain (^Qov)
  • Added Dense Palm (^Ftp), Savanna (^Fts), and Rainforest (^Ftr) terrains
  • Updated graphics for palms (^Ftd), tropical forest (^Ft), plank bridge (^Bp*), stone bridge (^Bs*), and chasm bridge (^Bcx*)

User interface

  • Healing animations are now played when poison is cured.
  • Moving units to a selected hex field
    • Units in reach of a hex field are highlighted during selection.
    • Highlighting and labeling the selected hex field with the amount of in range units.
    • Left click on a controlled one triggers the move.
  • The recruit and recall commands are restored when right-clicking on a leader, but with new semantics -- only that leader's recruits/recalls will be presented as options.
  • Fog/shroud clearing has been reworked to be more timely and consistent.
  • The statistics window can now show per-scenario statistics.
  • The sidebar now includes specials when reporting a weapon's damage.
  • The sidebar now includes all specials when reporting a weapon's number of attacks (not just swarm).
  • Active/inactive highlighting for abilities and weapon specials in the sidebar.
  • Fix broken MP game creation dialog on low resolutions
  • The "repeat recruit" command now refers to the last recruit by the current side, rather than the last recruit by the current game client.
  • Refinements to undo stack management, sometimes allowing moves to be undone after "update shroud now" (if those moves did not affect fog/shroud).

Whiteboard

  • Don't end turn if executing all actions in another way than using the "end turn" button/hotkey. (bug #19901)

WML engine

  • The recall, recruit, prerecall, and prerecruit events will now block undoing unless they contain [allow_undo].
  • The cost of a recall/recruit is now paid between the prerecall/prerecruit and recall/recruit events. (FR #16711)
  • Sighted events should be reliable, provided the player does not activate delayed shroud updates (which is still a major caveat).
  • Added [effect] apply_to=overlay
  • Added [effect] apply_to=experience
  • Added [terrain_type] max_light= and min_light=.
  • Standardize weapon filters, supporting special=, [and], [or], and [not] wherever weapons can be filtered.
  • Image path functions again evaluated left-to-right. Fixes bug #20196.
  • Support for [swarm] causing attacks to increase as health decreases.
  • Inactive names and descriptions for abilities and weapon specials will default to the active name/description if omitted.
  • Fix a bug with [store_time_of_day] so that it treats the provided variable as a container instead of an array (overwrite instead of append).
  • Added [side]suppress_end_turn_confirmation= for those (rather nonstandard) scenarios where players often skip their turns.

Miscellaneous and bug fixes

  • Fix invalid memory access crash resulting from deleting all saved games in the Load Game dialog
  • Redesigned the hotkey preferences dialog
  • Removed two Khalifate leftovers (Hakim portrait and KHALIFATE_NAMES macro)
  • Ambush now works for desert palms and dead great trees (bug #20207)
  • Hex field size and default terrain are wml configurable
  • RCA AI renamed from 'testing' to 'default'
  • Fix OOS when dismissing a recall in a multiplayer campaign (bug #19924).
  • Fixed a bug disallowing the left shift and meta key to be detected in the hotkeys
  • Added -Wuseless-cast to the CMake pedantic flags.
  • Added -Wc++11-compat to the CMake pedantic flags.
  • Added bzip2 support for savefiles. (new dependency)
  • Fix OOS when observe scenario 2 in a multiplayer campaign (bug #20217).
  • Synchronize underlying_unit_id in MP campaigns (bug #20227)
  • Fixed: Compilation with Boost 1.51.0 (Gentoo bug #440742).
  • Added -Wnoexcept to the CMake pedantic flags.
  • Fixed a rare case where a player could exercise (very) limited control of another (human) player's units in a hotseat game.
  • Added project files for CodeLite.

Version 1.11.0

Add-ons client

  • The Update Add-ons dialog has been replaced with an alternate view mode for the main Add-ons Manager
  • The Add-ons Manager now allows filtering add-ons by installation status (all, installed, not installed, upgradable)
  • Add-ons in the Add-ons Manager are initially sorted by title instead of the order they were originally uploaded to the server
  • Add-ons with broken/unavailable dependencies are reported to the user
  • The add-on dependencies prompt reports all recursively-resolved dependencies, not just the direct dependencies
  • Add-on installation, upgradability, and publish status is reported as a footnote for every list entry, plus a field in the Description dialog
  • The Add-ons Manager filter textbox is preserved during the same connection (i.e. while installing multiple add-ons)

Add-ons server

  • Reject add-ons with names or titles that begin with a WML text format markup character (any of *, `, ~, {, ^, }, |, @, #, <, &)
  • Switched to port 15006 for 1.11.x and adjusted all tools to this port

AI

  • In akihara_recruitment, analyzing battle field - we take village as important spot. The aim of it is to list terrain couple according to these important spot so we can evaluate battle simulation on them.
  • In akihara_recruitment, the struct situation became a class.
  • New AI formula 'aki_eval' for testing a battle evaluation
  • AI now properly considers the expected damage from poison when attacking using poisoners.
  • Adding a new scenario for the ai-arena-small in order to test the new AI.
  • Adding new files for the new AI (ai/akihara/recruitment.?pp)

Campaigns

  • Added a note to all final scenarios, stating which one is the last scenario
  • A Tale of Two Brothers:
    • Fix bug #19949: Turns left counter initially incorrect when objectives change and turn limit is extended
    • The Chase: fixed some missing messages if no unit with role=speaker is present
  • Dead Water:
    • Updated the Stun weapon special code to use [object] duration=turn
  • Delfadors Memoirs:
    • Showdown in the Northern Swamp: added to conditional notes in objectives about who should kill Iliah-Malal
  • Dead Water:
    • Changed uses of "ai turn" to "side # turn" ("[event]name=ai turn" breaks replays)
  • Descent into Darkness:
    • Fix most possible cases for Darken Volk becoming "stuck" in 09_A_Small_Favor3.
  • Eastern Invasion:
    • Revisions to dialogue and part of the story.
  • Heir to the Throne:
    • Implemented FR #19418: the Orcs destroy the villages near Konrad's castle when capturing them in The Elves Besieged
    • Fixed bug #19531: scroll to reinforcement units in Blackwater Port
    • Fixed bug #19517: The injured sergeant in HttT: Cliffs of Thoria will now always become visible when he is discovered.
  • Legend of Wesmere:
    • Fix bug #19577 - some terrain was not snow covered
    • Fix bug #19565 - yetis remaining under fog when they appear in scenario 10
  • Liberty:
    • Fixed unknown unit type errors in 04_Unlawful_Orders
  • Sceptre of Fire:
    • Searching for the Runecrafter: updated the "sighted location" code to make use of [filter_vision], plus a SSF
    • Keep recall list at end of scenario 7
  • Son of the Black Eye:
    • Removed Al'Brock and Flar'Tar death as defeat condition in objectives in Civil War
    • Fixed bug #19684: Kapou'e says a different message if he kills the first Elf in Silent Forest
    • Silent Forest: the messages that appear upon killing the first Elf can be translated differently depending on the Elf's gender
    • Fixed bug #19686: fixed two variable checks that prevented some strings from being displayed in Back Home
  • The Hammer of Thursagan:
    • Fixed bug #19743: in Mages and Drakes, Perrin has two different messages about apprentices, depending on the difficult level
    • Karrag now gets enough gold to actually recruit when met
  • The South Guard:
    • Fixed bug #19758: Urza Afalas' sighted event is fired also when the Lich is seen, and if the player allies with the Elves, then both Urza Afalas and Mal M'Brin must be defeated
  • Tutorial:
    • Applied patch #3203: Allow to end the scenario via the right-click menu.
    • Fixed bug #19316: Narrator messages are now translated.
    • Replaced $unit.type by $unit.language_name to make a string completely translatable
    • Fixed bug #19367: Incomplete i18n in wesnoth-tutorial
  • Under the Burning Suns:
    • Made it so that Kaleh gets the default AMLA after he's been fully upgraded
    • Fixed flood appearance over wooden boards
    • Update scenario code to take advantage of modern WML features
    • Fix bug #19630
    • Fix some minor unreported bugs
    • Minor spelling and grammar corrections
    • Made it so that all units are rehydrated quietly upon victory in scenario two
    • Updated the Stun weapon special code to use [object] duration=turn
    • The Human Commander unit now uses the smallfoot movetype instead of woodland
    • Display dehydration status in the sidebar
    • Ensure player always has positive gold leaving the cave in Out of the Frying Pan
    • New AI for human messenger in "Out of the Frying Pan"
    • Taking all items is now optional
    • Finding the map in scenario 3 is now useful
    • Healers now prevent dehydration instead of removing it, so they no longer heal dehydrated units
    • New art for Dark Assassin

Editor

  • New gui theme, fixes the editor being broken on low resolutions.
    • Smaller font for displaying the terrain information.
    • Less space between the map coordinates and the terrain information (no need to display defense value)
    • More width sidebar
      • Features one more editing tool per row.
      • Additional brush
      • Button for default zoom switching.
    • Space for a second row of editing tools.
  • Terrain group selection from a menu, saving a lot of space.
  • Terrain palette
    • is scaled to fit at all resolutions.
    • Removed the scrolling feature which is no longer needed.
  • Improved performance of the Editor Settings ToD lighting controls

Engine

  • Refactored scenario transition code
  • Fixed bug #19599: Engine keeps redundant unit.ai_special_ information.

Graphics

  • New graphics for the Spectre.

Help menu

  • Added a new Add-ons section explaining add-on usage basics
  • Added more elaborate descriptions for the Units, Abilities and Weapon Specials sections, with the intent of reducing confusion when they are initially empty (feature request #13914)

Language and i18n

  • Fixed two untranslatable strings in the "new" MP lobby
  • Fixed an untranslatable string in the Multiplayer Commands help topic
  • Fixed untranslatable Cancel button label in the add-ons server network status dialog (bug #19659)
  • New translations: Ukrainian
  • Updated translations: British English, Chinese (Simplified), Chinese (Traditional), Dutch, Estonian, Finnish, French, Galician, German, Greek, Hungarian, Indonesian, Irish, Italian, Japanese, Korean, Latin, Lithuanian, Norwegian, Old English, Polish, Portuguese (Brazil), Russian, Slovak, Spanish

Lua API

  • Upgraded Lua from 5.1.4 to 5.2.0
  • new: field wesnoth.game_config.mp_debug
  • new: setter for wesnoth.sides[i].color
  • Deprecated the following functions from the wesnoth table, all of which have better replacements: get_side, get_side_count, get_unit_type_ids, get_unit_type, register_wml_action
  • Changed: Extended support for toggle_button.
  • Fixed: wesnoth.find_reach does no longer replace a passed private lua proxy unit with the on-map unit at the same location
  • new: helper.round function
  • wesnoth.scroll_to_tile() now takes a fourth optional argument (boolean) specifying whether to ignore the scroll speed setting in Preferences and instantly warp to the given location
  • Added wesnoth.lock_view(), taking a boolean argument specifying whether to lock gamemap view scrolling (so the user cannot scroll, while WML/Lua actions still can, i.e. for cutscenes), or unlock it
  • Added wesnoth.view_locked(), returning a boolean true value if gamemap view scrolling has been locked, and false otherwise
  • Added == operator for (private, on-map, recall) lua proxy units, checking for unit identity
  • Added wesnoth.get_villages() function

Multiplayer

  • A New Land:
    • Made it so that the "Elvish Shaman" option in the elvish unit selection menu gets translated. Fixes bug #19677.
  • Fix an accidental terrain type change in Isar's Cross
  • Fix attacker side being human in 6p_Team_Survival (bug #19400)
  • Ignore Pango markup in map descriptions (bug #19210)
  • Canceling the sides setup screen when hosting a MP game now brings the host back to the game configuration screen first instead of returning immediately to the lobby or (for hotseat) titlescreen (bug #7130)
  • The Set Password action is no longer shown for local hotseat games (bug #10784)
  • Changes to the time of day schedules of Fallenstar Lake and Silverhead Crossing
  • Random leader is default selection when picking faction

Music and sound effects

  • Replaced some of the wolf hit sounds with lower-pitched ones

Terrain

  • New Syntax for terrain maps
  • New tropical forest images
  • New palm forest terrain
  • Deprecated flowers (Ggf) and Volcano (Qv) removed - use Gg^Efm and Mv respectively
  • Fix bridge/rail transitions to each other
  • Add new rail terrain type; no existing unit can move on it, so their move/defense values are unchanged
  • New stone, hanging, and wooden chasm bridges
  • Fix bug #19753, missing hex transition

Unit changes and balancing

  • New extra_define ENABLE_WOLF_ADVANCEMENT to optionally enable Wolves advancement to Great Wolves and Direwolves
  • New extra_define ENABLE_TROLL_SHAMAN to optionally enable Troll Whelps advancement to Troll Shamans (not in multiplayer)
  • Lowered General's experience to 150 when extra_define DISABLE_GRAND_MARSHAL is used

User interface

  • Restored leader unit image in Load Game dialog (bug #18683)
  • Added a "Back to Start" option to the game menu to load the current scenario's start save if it is available (feature/bug #18027)
  • Added tooltips to Load Game dialog (feature/bug #18249)
  • Added a Reset All button to Hotkey Settings dialog in preferences (feature/bug #3797)
  • Fixed excessive idle CPU usage in story screens without story text
  • Map editor now displays invisible overlay terrains on main map
  • Made add-ons with markup characters at the start of their titles display normally in the add-ons management dialogs (e.g. without colors)
  • Re-fogging does not occur in the middle of the player's turn.
  • Fixed provided saved game filenames being ignored when requesting to save a MP game due to a network or OOS error (bug #19562)
  • Fixed bug #19538: Filters matching 0 saved games cause crash
  • Clicking a unit does not reveal adjacent hidden units (bug #19381).
  • Simultaneous ambush, sighted and teleport failed messages will no longer cover each other up
  • Added: A character limit width constrain for a text
  • Stop showing a unit's potential moves before moving in a move & attack, rather than after (more consistent with regular movement)
  • Changed: Made the id for a tooltip and helptip mandatory.
  • Added: Helper code to assist in widget placement.
  • Added: New widget pane.
  • Added: New widget viewport.
  • Added: New dummy widget instance.
  • Added: New control matrix.
  • Trying to initiate movement (or an attack) before previous movement is finished no longer unselects the current unit (bug #19734). (The new movement command is still deliberately ignored.)
  • The recruit and recall commands no longer appear in the context menu for shrouded or (visibly) occupied hexes.
  • Fixed bug #19844: Block recruiting into shrouded hexes.
  • Fixed bug #19783: Disable commands while WML menu items are executing.
  • Fixed bug #19533: Both damage tooltips now take into account local factors.

Whiteboard

  • Fixed bug #19626: segfaults on window resize
  • Fixed bug #19369: Using planning mode can cause losing ability to move my units
  • Fixed bug #19408: Crash shortly after executing invalid multi-turn move
  • Fixed bug #19581: Leader can still move after a planned recall
  • Shortened all context menu items
  • Fixed bug #19619: In local games, units keep ghosted appearance during opponent's turn
  • Fixed bug #19613: Multiple attacks after planning attacks in whiteboard
  • Fixed bug #19618: Problems with ending turn with impossible moves
  • Fixed bug #19615: Can see part of opponents' planned moves in local multiplayer game
  • Refactored wb::side_actions
  • Refactored the highlighter and the visitor

WML engine

  • new key: [unit]/[unit_type] vision=, decouples movement and sight range.
  • new tag: [movement_type] [vision_costs], used for calculating sight range if present.
  • new action tag: [clear_menu_item] id=...
  • new key: [set_menu_item][command]delayed_variable_substitution=yes|no
  • Removed support for the deprecated "colour=", "debug_border_colour=", and [colour_adjust]
  • Fixed bug #18996: Increase random number generation range.
  • Made it possible to disable the credits screen at the end of a campaign by specifying end_credits=no in the final [endlevel] action, or in the [campaign] definition (defaults to yes)
  • Added [modify_side] color= attribute, which changes a side's team color range (feature/bug #18772)
  • Removed support for the deprecated [removeitem]
  • Implemented ~BLEND(r,g,b,o) image path function, which blends the image with a specified RGB color according to certain opacity (factor or percentage) (feature/bug #11590)
  • [find_path] now returns a "hexes" key instead of a "length" key inside the output array
  • Introduce inline SSF support in action tags [allow_recruit], [disallow_recruit], [set_recruit], [gold] and [modify_ai]
  • [gold][filter_side] and [modify_ai][filter_side] are deprecated, use inline SSF instead
  • Action tags [modify_side], [place_shroud] and [remove_shroud] now default to "all sides" instead of side=1 if left empty.
  • Introduce support for [filter_owner] in SLFs. For villages. Keeps backwards compatibility for inline owner_side= at the cost of confusing syntax (due to (possible) duplicate side information). This also adds SSF support in [store_villages].
  • Added support for resistance_multiplier= key in [harm_unit]
  • Fixed bug #19498: [modify_unit] duplicating units if x,y changed
  • Added inline SLF support in [scroll_to], by using the first matching location
  • Introduce inline SSF support in [objectives] and [show_objectives]
  • The [drain] weapon special now supports value=, multiply=, divide=, add= and sub=
  • Added [heal_on_hit] for healing/harming the user by a fixed amount
  • Drained HP amounts can now be negative. Trigger this by setting a negative value in the [drain] or [heal_on_hit] weapon special
  • Negative drain amounts will not take a unit below 1 health
  • Added [show_if] support to [objectives] [note]
  • New tags: [lift_fog] and [reset_fog]
  • New keys: reset_maps= and reset_view= added to [modify_side].
  • Using more than 4 multiply effects no longer wraps to negative integers
  • Added: support for ranges of sides in SSF
  • The [filter_vision] tag of the SUF now uses a SSF (viewing_side= still works, but is deprecated and should be renamed to side=) Semantics for empty side information changes from "all enemy sides" to "all sides"
  • [filter_vision] now works in location filters as well as unit filters, and has an additional key (respect_fog) for locations
  • Support for [effect]unit_type= and [effect]unit_gender= has been removed, use [effect][filter]type= respectively [effect][filter]gender= instead
  • Border hexes are included when using radius= in the SLF of [remove_shroud] and [place_shroud] (they were already included for directly matched hexes).
  • Retrofitted CLEAR_FOG and UNCLEAR_FOG macros to make use of [lift_fog] and [reset_fog]
  • Replaced variable i by TRANSFORM_UNIT_i in macro TRANSFORM_UNIT
  • Fix $owner_side in capture events fired due to unit movement
  • Introduce [item]redraw=yes|no (def yes) parameter
  • Added [object]duration=turn
  • Pushed LOOT macro from LoW, THoT and TRoW in core
  • Adds new WML attribute for configurable village support (upkeep)
  • Change [object]duration=level to [object]duration=scenario
  • The race attribute in SUFs can now take a comma-separated list
  • New image path function: ~ROTATE()
  • Fixed some cases where [find_path] did not restore $this_unit
  • Added: Allow better error messages for missing WML children.
  • [scroll_to] and [scroll_to_unit] now accept an optional boolean immediate= attribute (defaults to false) specifying whether to ignore the scroll speed setting in Preferences and instantly warp to the selected location
  • Added [lock_view] and [unlock_view] WML actions, for locking and unlocking gamemap view scrolling (so the user cannot scroll, while WML/Lua actions still can, i.e. for cutscenes)
  • Fixed CALL_FUNCTION macro (bug #19805)
  • Added [effect] apply_to=halo
  • Converted [store_villages] from C++ to Lua
  • Introduced [unstore_unit]animate=yes|no (def. yes) parameter
  • Made the display of ability and weapon special descriptions smarter, so those descriptions no longer require (and should no longer have) the name of the ability/special as the first line of the description.

Miscellaneous and bug fixes

  • Fix wrong preferences path suffix (1.1 instead of 1.10) on Linux and other platforms using XDG layout (no compiled-in preferences path override, bug #19318)
  • Fixed unit sound animation timings wherever {SOUND:SLOW}, {SOUND:POISON}, and several macros from animation-utils2.cfg are used (see bug #19274)
  • Restart is no longer required to toggle desktop notifications
  • Display the savegame version when warning the user about unsupported or mismatched versions (bug #7243)
  • Implemented feature request for difficulty changing during campaigns. (see bug #10978)
  • The saved games cache file is now save_index instead of save_index.gz, and it is compressed when the Compressed Saves option is enabled in Advanced Preferences (patch #3115)
  • Show base terrain description if none for overlay (bug #19411)
  • Added wesmage tool to test SDL image manipulation functions.
  • Fixed: A possible NULL-pointer deference in get_unit_type_function.
  • Changed: Default man installation directory now confirms to FHS.
  • Added: New floating point emulation code.
  • Make Wolf Rider and Wolf raise their heads if and only if unit is submerged: forums.wesnoth.org/viewtopic.php?f=4&t=36212
  • Changed: Add a small cache for reading files, giving a minor improvement.
  • Added: Helper tool to create images for unit tests.
  • Added: Image manipulation unit tests.
  • Changed: Rewrote the surface blending algorithm, and improving its speed using NEON intrinsics on processors supporting NEON (the Pandora).
  • Fixed bug #19503: "maximum auto saves" setting now works correctly.
  • Fixed: A preprocessor bug looking beyond the end of a buffer.
  • Fixed: Binding a temporary in the network code, possibly causing crashing.
  • Fixed bug #19658: In replays, units sometimes refresh movement when it is not their turn
  • Added: Enabled BREAKPOINT and WES_HALT macros on the Pandora.
  • Fixed bug #19678: Escape the pipe-symbol in the wiki: TerrainCodeTableWML.
  • Fixed bug #19469: Missing scenario hash results in Remote scenario always added to game description
  • Fixed bug #19322: Empty sides not being listed at the status table
  • Fixed bug #19681: Use the created cache instead of rebuilding it all the time
  • Fixed bug #16544: Fail to read `empty' cache files.
  • Fix bug #19681: Cache is never valid
  • Added shroud_data to the inspection window (FR #19623).
  • Fixed: grids now recursively search for widgets by pointer.
  • Fixed: Wrong current side number after side turns (bug #19735) It also affected the lua field wesnoth.current.side
  • Added: Fail macros FAIL and FAIL_WITH_DEV_MESSAGE.
  • Added: Helper code to make it easier to write enumerate stream operators.
  • Added: UNREACHABLE_CODE macro.
  • Added: TELEPORT animation macros usable by any units
  • Added: CMake option ENABLE_SHARED_LIBRARIES.
  • Fixed: Allow strict compilation with CMake using the upcoming gcc-4.8.
  • Fixed bug #19795: OOS when [message][option] is used in a (single-player) start event when side 1's controller is null.
  • Changed: Enabled strict compilation for Clang in CMake.
  • Added: ENABLE_PEDANTIC_COMPILATION option for CMake.

Version 1.10.0

Campaigns

  • Legend of Wesmere:
    • Scenario 03: Fixed bug #19067: Control over Galtrid's side stays with the player after the arrival of Kalenz
    • Scenario 22: Fixed bug #19236: Cleodil was missing and no recall list
  • An Orcish Incursion:
    • Scenario 3: select a new unit with the Adviser (sic) role for dialogs if the original unit selected at the start of the scenario died
  • Under the Burning Suns:
    • Scenario 5: Fixed bug #19303: one of the dwarves was spawning in a wall.
  • The Rise of Wesnoth:
    • Peoples in Decline: fixed a message not shown when the Sea Serpent appears

Editor

  • Added Etheral Abyss terrain (Qxua) to the Cave category, too
  • Updated the terrain palette icons for winter/fall single or mixed forested hills so they show the default base Hhd instead of Hh

Graphics

  • Fixed some spearman attack animations being too slow in some directions

Language and i18n

  • Updated translations: Chinese (Simplified), Chinese (Traditional), Czech, Finnish, French, Galician, German, Hungarian, Italian, Latin, Lithuanian, Old English, Polish, Serbian, Slovak, Spanish

Lua API

  • Extend and improve wesnoth.select_hex, deprecate wesnoth.highlight_hex

Multiplayer

  • Allow tab completion of player names in commands (bug #19284)
  • Fixed bug #19260: 'villages_value' -> 'village_value' in 5p_The_Wilderlands
  • Fixed eras other than the default breaking 2p_Hornshark_Island. If a player has a faction not in the default era, a standard set of units (aimed at Khalifate) is used now.
  • Fixed bug #19083: allow attack to happen normally without causing OOS if turn time runs out in attack selection dialog.
  • Fix some unit images being cropped in 2p_Aethermaw

Terrain

User interface

  • Draw gold hex cursor above all terrain when no unit visible

WML engine

  • Improve [select_unit] to match its original intention (bug #19224)
  • Improve error handling in case of invalid maps passed to [replace_map] or [terrain_mask]
  • Disable wml menu items in linger mode without debug mode (bug #16262)

Whiteboard

  • Fixed bug #18635: Percentage not displayed for units selected at their future position
  • Fixed bug #19142: attacks can be simulated between units (for which this shouldn't be possible)
  • Fixed bug #19221: Assert when a whiteboard move-attack wins a scenario
  • Fixed bug #19222: After 'delete planned action', the unit is almost invisible
  • Fixed turn not finishing when moves were planned for future turns

Miscellaneous and bug fixes

  • Fixed wmlindent writing CRLF end of lines on windows
  • Fix tutorial units without xp bar
  • Reset game credits instead of appending on WML cache refresh (bug #19292)
  • Fix wmllint check for "unknown xy referred to by id" not working

Version 1.9.14

AI

  • Fixed bug #18962 and bug #19214: AI leaders are no longer slow to select attacks.

Campaigns

  • Sceptre of Fire:
    • New set of portraits

Editor

  • Fixed overpainting of transparent tile icons on the editor palettes on the sidebar
  • Fixed terrain palette shrinking to the size of small categories when switching maps (bug #19218)
  • Fixed various crashes related to drawing/filling operations (bug #18928)

Language and i18n

  • Changed font used for CJK languages to DroidSans
  • Updated translations: British English, Chinese (Simplified), Czech, Dutch, Estonian, French, Galician, German, Hungarian, Latin, Norwegian, Serbian, Slovak, Spanish

WML engine

  • Fix store_unit clearing the used variable before its filter can reference it (bug #19203)
  • Check for argument image file existence before creating a MASK or BLIT image mod (bug #19208)
  • New key [object]delayed_variable_substitution=yes|no (default no) as a workaround for bug #18893 (fixes bug #19225)
  • Made empty {} preprocessor directives be handled more gracefully (bug #19233)
  • Fixed bug #19213: [harm_unit] incorrectly uses ToD bonus
  • The turn bell and autosaves are not triggered anymore in certain situations after [endlevel] has been issued

Miscellaneous and bug fixes

  • Fixed bug #19032: Poison and level up AI defense placement calculation
  • Fixed bug #19245: wesnoth(6) man page doesn't describe the --campaign* options correctly
  • Enable local ToD lighting option by default.

Version 1.9.13

Campaigns

  • Northern Rebirth:
    • Infested Caves: integrated sighted events with moveto events
    • To the Mines: fixed Hamel not having the hero overlay
    • Clearing the Mines: fixed Dwarves recruitment not being disallowed upon winning
    • The Pursuit: integrated a sighted event with moveto event
    • The Pursuit: replaced another sighted event with ON_SIGHTING
    • Elvish Princess: fixed Ro'Arthian and Ro'Sothian not having the hero overlay
    • Introductions: used ON_SIGHTING instead of sighted event
    • Stolen Gold: gave Krash the expendable leader overlay
    • Stolen Gold: fixed one of the two loyal Drakes having two IDs
    • Stolen Gold: fixed Hidel missing his portrait
    • Get the Gold: gave Eryssa the expendable leader overlay
    • The Eastern Flank: made the Gryphon fly away and then return
    • Showdown: removed hero overlay from Ro'Arthian and Ro'Sothian when they are leaders
    • Showdown: fixed Hamel's death not causing defeat
    • Epilogue: fixed music not being played
  • Eastern Invasion:
    • The Escape Tunnel: integrated sighted event with moveto event
    • Captured: integrated a sighted event with moveto event
    • Weldyn Besieged: fixed a typo in Konrad's last breath event
  • Sceptre of Fire:
    • Caverns of Flame: integrated a sighted event with moveto event
  • Son of the Black Eye:
    • The Desert of Death: integrated a sighted event with moveto event
  • Legend of Wesmere:
    • Ka'lian Under Attack: fixed a lua error in AI code

Editor

  • Fixed missing brightening of selected hexes under the brush

Language and i18n

  • Updated translations: British English, Czech, Dutch, French, Galician, German, Hungarian, Korean, Latin, Lithuanian, Old English, Polish, Russian, Serbian

Multiplayer

  • Fix user interface set to side 1 when entering linger mode (bug #15847)

Unit changes and balancing

  • Changed the Lancer's and the Deathblade's AMLA requirements to conform to the current AMLA standards

User interface

  • Removed blur from the add-ons description dialog
  • Fixed bug #19121: Make click dismiss work properly.
  • Fixed bug #17961 and #18686: Shows of big portraits on smaller screens.
  • Fixed bug #19118: Default theme: coordinates overlap with the clock status panel on small horizontal resolutions. Also fixed for the widescreeen theme.
  • Made it so that "AM"/"PM" show up in the default and widescreen themes on the lowest supported resolutions.

Whiteboard

  • Display turn numbers on multi-turn planned moves
  • Fix attacks not finishing but still being transmitted over the network when executing all actions

WML engine

  • Fixed: ~L() not handling lightmap having different width. Now rescaled.

Miscellaneous and bug fixes

  • Fixed: compilation with clang 3.0 in C++11 mode.
  • Changed: Sort order of campaigns uses a stable sort now.
  • Fixed bug #18832: Fixed ~BLIT() to access images out of bounds.
  • Fixed: ToD local light for RGB values bigger than 128.
  • Fixed: hex-cut of images in :layers debug tool. Also removed empty images
  • Forward ported a new version of multiplayer chat log history dialog
  • Fixed bug #19188: Turn dialog always speaks of Konrad in tutorial
  • Added: NativeClient port.
  • Fixed: crash when using fullscreen on Mac OS using SDL nightly builds.
  • Optimized screen update (zooming, ToD change, etc)
  • Optimized framerate by removing a lot of empty terrain images
  • Optimized perfomance cost of complex local ToD areas
  • Fixed bug #16571: Multiplayer login error with certain username or password formats

Version 1.9.12

Language and i18n

  • Updated translations: British English, Czech, French, German, Hungarian, Indonesian, Italian, Latin, Latvian, Old English, Russian, Slovak

Multiplayer

  • Fixed missed side init if controller changes at side progression (bug #16299)
  • Fixed user interface not updated if controller changes (bug #19056)

Whiteboard

  • Fix invalid actions not being detected until another action is created
  • Erase invalid actions when you try to execute them
  • Disable access to Suppose Dead action until we can find a better UI for it
  • Fix bug #18774: Recalling with the whiteboard enabled causes crash
  • Fix bug #19061: Crash on starting most campaign scenarios
  • Fix getting "not enough gold" message when executing planned recruits/recalls
  • Ghost the unit at starting position of planned moves
  • On mouseover, display orb and xp bar on planned moves with accurate status
  • Mouseover on last planned move of a unit displays accurate movement left
  • Re-enabled multi-turn moves

Miscellaneous and bug fixes

  • Fixed bug #19095: fixed a gcc warning when compiling under OpenBSD
  • Fixed bug #19096: fixed linker errors on OpenBSD when using the CMake build system

Version 1.9.11

Campaigns

  • Sceptre of Fire:
    • A Bargain is Struck: added missing hero overlays to Alanin and the caravans
    • A Bargain is Struck: added find_vacant=yes to avoid unstoring Alanin upon Rugnur or another player's unit
    • The Dragon: fixed Rugnur being recalled not fully healed
    • The Dragon: integrated two sighted events with moveto events

Engine

  • Fixed bug #18918: the create unit dialog was sometimes capturing village incorrectly

Language and i18n

  • Updated translations: British English, Dutch, French, Finnish, Galician, Indonesian, Italian, Korean, Latvian, Lithuanian, Old English

WML engine

  • Added [secondary_unit] SUF for filtering the recalling leader in [recall] action WML
  • Fixed red, green and blue keys in 24-hour ToD not maching the default schedule colors
  • Reworked [harm_unit]'s damage calculation code to avoid leadership ability altering the damage value

Miscellaneous and bug fixes

  • Fixed disappearing theme UI buttons after changing fullscreen/windowed mode or resolution in Preferences during a game
  • Fixed define handling of wmlxgettext (bug #18622)
  • Changed: Try to recover from broken pango-markup.

Version 1.9.10

AI

  • Fixed: Display of recruitment_ignore_bad_combat and recruitment_ignore_bad_movement is no longer swapped (bug #18839)

Campaigns

  • Descent into Darkness:
    • A Small Favor, part 1: used 24 hour ToD
  • Son of the Black Eye:
    • To the Harbor of Tirigaz: used 24 hour ToD
  • Under the Burning Suns
    • Subterranean Struggle: no longer possible to win by allowing allies to die
    • Across the Harsh Sands: the Black Hand oasis is no longer possible to enter without triggering the bandits

Editor

  • Made sure lighting setting changes are applied immediately when closing the settings window when automatic map view updates are disabled
  • Starting position tool menu now displays coordinates of existing positions, and initially highlights the current player number assigned to the selected hex
  • Add a menu item "Refresh WML" to reload terrain WML

Graphics

  • New Animations:
    • Goblin spearman run se
    • Merman fighter attack se
    • Tinted the slowed snail icon to match the new slowed unit color
  • Terrain:
    • Tall encampment keep can now be placed next to the tent encampment keep
    • Forest/hill terrain combinations no longer appear black on the minimap
  • Default team color always applied last; fixes bug #18817
  • Removal of Khalifate unit images

Language and i18n

  • Made it so that all of the Hangul Syllables block is covered by the font-loading code.
  • Made it so that en_US translations are loaded if they exist (bug #18507)
  • Updated translations: British English, Czech, Dutch, Finnish, Galician, Indonesian, Irish, Italian, Japanese, Korean, Latin, Lithuanian, Old English, Portuguese (Brazil), Russian, Slovak, Swedish

Lua API

  • add function wesnoth.get_starting_location
  • The side metatable provides also the side number (like wesnoth.sides[i].side, which would be i)
  • add function wesnoth.debug
  • Added: Support for clickables (button and repeating button) to wesnoth.set_dialog_callback (patch #2763)
  • Allowed function debug.traceback()
  • wesnoth.set_village_owner takes a bool argument determining whether to fire capture events
  • add field image_mods in proxy units
  • add field undead_variation in wesnoth.races

Multiplayer

  • New map: Aethermaw
  • Updated maps: Hamlets, Howling Ghost Badlands, Thousand Stings Garrison

Terrain

  • Oasis may be placed on any terrain, aliased to base
  • New terrain macro: MOUNTAIN_SINGLE_RANDOM
  • New rotting variant for wooden bridge

Unit changes and balancing

  • All mounted units now have forest defines capped at 30%. This reduces their defense on forested hills from 40% to 30%
  • Forests now give best defense and worst movement on all terrain, not just hills - fixes bug #18216
  • Fixed some Khalifate unit animation glitches
  • The XP required for an AMLA is now 50*level (and 25 for level 0) instead of always 150.
  • Increased the HP of the Great Mage from 55 to 60
  • Increased the ranged attack of the Footpad from 4-2 to 5-2
  • Removal of the Khalifate units, faction and era

User interface

  • Removed waypoints UI feature
  • Added an option to disable the "loading save from a different version" confirmation dialog
  • Line-wrap author names in the add-on description dialog (bug #18691)
  • Made the Delete Add-on (in the server) option request confirmation from the user before proceeding
  • The add-ons download list shows up again after publishing/deleting a single add-on
  • Added option in advanced preferences that allows the twelve-hour clock format to be used
  • Reenabled "delay shroud updates"
  • Changed: Disable pango markup in unit names (bug #17788)
  • It is now possible to remove multiple installed add-ons at the same time
  • Slowed units are now tinted to be recognizable at a glance
  • Fixed: Removed old markup style from OOS messages (bug #18387).
  • Fixed: OOS ignore toggle in the save dialog (bug #18330).

WML engine

  • Readded the liminal alignment
  • Added four-difficulty versions of certain macros: QUANTITY4, ON_DIFFICULTY4, TURNS4, GOLD4, INCOME4, and ATTACK_DEPTH4
  • added support for SSF to SUF via a [filter_side] subtag
  • added support for [enemy_of] to SSF
  • added support for [allied_with] to SSF
  • New [find_path] tag, a WML interface to the pathfinder
  • Add inline SSF support to [store_starting_location]
  • Add support for [capture_village][filter_side]
  • Added FACING, which adds facing= to a previous [unit] codeblock
  • Added VARIATION, which adds variation= to a previous [unit] codeblock
  • Deprecated the Add-on.cfg style in favor of Add-on/_main.cfg, except for the case of a single-file add-on
  • [illuminated_time], which has been obsolete for a long time, is no longer valid. Using it will cause errors to be thrown
  • Reintroduced support for [unit][event]s (was until 1.7.10, bug #16259) Such events are no longer forcefully variable substituted before inserting into the scenario wml
  • Fixed "error parsing image modifications" message caused by subsequent image mod additions using the add attribute in [effect] apply_to=image_mod
  • Made $this_unit in filter_recall work
  • Added IS_EXPENDABLE_LEADER, which gives a unit the expendable leader icon
  • Added $this_unit support to [harm_unit] and [find_path]
  • Settings by [color_adjust] no longer expire at turn start or over save/load cycles
  • Implemented bullet= for [objectives], [objective], [gold_carryover], and [note]
  • Implemented red=, green=, and blue= for [objective], [gold_carryover], and [note]
  • Added [theme] hidden= attribute that makes a theme unavailable for selection in Preferences or :theme (defaults to no)
  • Implemented $second_unit being bound to the acting leader in recall/recruit events
  • Introduce [redraw]clear_shroud=yes|no and [redraw] support
  • Introduce [race]undead_variation as a default for the race's [unit_type]s
  • $owner_side describes the previous side owning a village in capture events (FR bug #13567)
  • Introduce [capture_village]fire_event=yes|no (def no) whether to fire any capture events (was previously always yes)
  • Made [move_unit] respect image modifications applied by EffectWML to single units
  • Introduce [unit_type]image_icon key to override image for 72x72 icons (FR bug #15466)
  • Added IS_LAST_SCENARIO macro, for use in [objectives] dialog.
  • Fix [objectives]silent= not working initially in a scenario (bug #18927)

Miscellaneous and bug fixes

  • Add --language/-L commandline option to set the language for that session
  • Fixed: Avoid copying of singular iterators in the whiteboard code
  • Fixed bug #10969: Made it possible to switch themes from Preferences in the main menu
  • Fixed bug #16111: gold carryover if loading a save created in linger mode
  • Fixed bug #16508: remaining time of day areas that should affect map borders in mainline campaigns and MP scenarios
  • Fixed bug #18399 (part 1): Compilation with boost 1.47 (bug #18399's patch)
  • Fixed bug #18399 (part 5): Compilation with the clang 2.9 compiler (bug #18399's patch)
  • Fixed bug #18695: Fixed preload event not being fired
  • Fixed bug #18701: Evaluate key length even if intervening WML children don't exist
  • Fixed bug #18704: Make the create unit dialog give the created unit a valid gender for that unit type
  • Fixed bug #18766: Fixed a problem where version comparisons (including, but not limited to #ifver/#ifnver directives) could cease to work until Wesnoth was restarted
  • Fixed debian bug #636193: Fixed compilation on all Debian architectures
  • Fixed handling of #ifver and #ifnver preprocessor directives in wmllint
  • Removed CANYON and its associated terrain macros
  • The credits screen no longer mangles image path functions in background image lists
  • Fixed a rare glitch causing the menubar and sidebar buttons to appear initially as solid color rectangles at the beginning of a scenario start event
  • Fixed bug #18681: glitch with local time of day lighting
  • Fixed bug #18892: random crash when loading replays
  • Fixed bug #18882: Compilation with libpng-1.5.5

Version 1.9.9

AI

  • Fixed bug #16117: added a way to supress E_NOT_REACHED_DESTINATION to lua
  • Fixed bug #16247: modify SoF 8 to let the dragon attack aggressively api via an optional boolean parameter - ai.move_full(from,to_x,to_y,true)
  • Fixed bug #18057: AI leaders should now attack when they should
  • Fixed bug #18122: AI leaders set to defensive will now follow goals anyway
  • Fixed bug #18356: AI leaders now won't move to avoided keeps
  • Applied patch #2846 by thonsew: let AI forget about invisible enemy units in villages during get_villages phase (bug #18101)

Campaigns

  • Fixed remaining deprecation warnings about empty side=
  • Under the Burning Suns:
    • Fixed Naga Sentinel gaining an AMLA after 32 XP instead of the usual 150
    • Gave to Desert Shydes and Desert Stars 30% defense on void terrain

Engine

  • Fixed bug #16173: Using n or cl while a fake unit is moving causes the game to segfault by creating game_display::fake_unit as an exception safe interace to the fake_units
  • Improved unit_map lookup from std::map to boost::unordered_map to decrease lookup times
  • Fixed bug #16151: Discover new units on recruit
  • Fixed bug #17780: Allow objects to 'increase' damage to 0
  • Fixed bug #18098: now recruits and recalls capture village if recruited or recalled on village castle hex

Graphics

  • Fixed bug #18524: [replace_map] doesn't force window repainting
  • Fixed bugs #18504 #18493 and #18017: Time of Day and fading interact poorly
  • Fixed bugs #18475 and #17292: Mage of Light and Sorceress Halo/animation glitches.
  • Terrains:
    • Added Gray Coastal Reef, Tropical Coastal Reef terrain
    • Swamp no longer prevents embellishments from being drawn
    • Fixed bug #15940: graphics glitch: pillared wall terrain covers great tree

Language and i18n

  • Updated translations: British English, Estonian, French, Galician, Greek, Hewbrew, Indonesian, Irish, Latin, Macedonian, Old English, Russian, Vietnamese

Lua API

  • Added: function wesnoth.set_dialog_active (patch #2767)
  • Expanded wesnoth.races entries to return the wml object a race was constructed from via the __cfg field.
  • New function wesnoth.get_traits returning a table holding the global traits known to the engine.

Multiplayer

  • Updated maps: Aethermaw, Hornshark Island, Sablestone Delta, Thousand Stings Garrison
  • A New Land:
    • Fixed 'agriculture' not getting translated sometimes and research for agriculture not getting counted if the research order wasn't changed (bug #16477)
    • Options to share knowledge with those who have learned everything about whatever are no longer shown (bug #14822).
  • Added "chat_message_aging" advanced preference to allow setting the ingame chat message aging interval

Music and sound effects

  • New track "Battle Epic" by Doug Kaufman

Unit changes and balancing

  • New units: Great Wolf; Direwolf
  • Lowered swamp defense of Cuttlefish and Sea Serpent from 60% to 40%
  • Decreased cost of Giant Rat from 13 to 6
  • Various changes to the defense, movement and resistances of the Giant Rat
  • Increased the XP requirements of the Arif from 40 to 47
  • Increased the cost of the Falcon from 10 to 12
  • Decreased the beak and claw attack of the Falcon by one each to 2-3 and 5-1
  • Decreased the HP of the Falcon from 19 to 18
  • Increased the XP requirements of the Falcon from 20 to 24
  • Increased the XP requirements of the Hakim from 33 to 39
  • Decreased the HP of the Jundi from 36 to 32
  • Increased the XP requirements of the Jundi from 35 to 44
  • Increased the cost of the Khaiyal from 20 to 21
  • Decreased the blade resistance of the Khaiyal from 30% to 20%
  • Decreased the pierce resistance of the Khaiyal from 0% to -10%
  • Decreased the impact resistance of the Khaiyal from 10% to 0%
  • Increased the melee attack of the Mighwar from 7-5 to 8-5
  • Decreased the HP of the Mighwar from 57 to 53
  • Increased the melee attack of the Monawish from 6-4 to 7-4
  • Decreased the HP of the Monawish from 45 to 41
  • Decreased the HP of the Naffat from 32 to 28
  • Increased the XP requirements of the Naffat from 38 to 44
  • Increased the cost of the Naffat from 17 to 19
  • Decreased the melee attack of the Qatif-al-nar to 10-2
  • Decreased the ranged attack of the Qatif-al-nar to 8-3
  • Increased the XP requirements of the Rasikh from 40 to 150
  • Decreased the melee attack of the Tineen to 10-3
  • Decreased the impact resistance of the Falcon line from 0% to -10%
  • The Falcon line now gets 2 traits, one normal trait and the feral trait
  • The Naffat line is no longer able to get the strong trait
  • Converted units with khalifatelightfoot to khalifatefoot movetype:
    • Increased the fire resistance from -10% to 0% (Hakim only)
    • Increased the impact resistance from -20% to -10%
    • Increased the village defense from 50% to 60%
    • Removed the khalifatelightfoot movetype
  • Changes to khalifatefoot movetype:
    • Increased the frozen defense from 20% to 30%
  • Changes to khalifatearmoredfoot movetype:
    • Increased the shallow water and swamp mp from 2 to 3
    • Decreased the mushroom grove defense from 50% to 40%
  • Changes to the khalifatehorse movetype:
    • Increased the shallow water, swamp, cave, and mushroom grove mp cost to 4 in all cases
    • Increased the forest mp cost from 2 to 3
    • Decreased the frozen mp cost from 4 to 2
    • Decreased the swamp defense from 30% to 20%
    • Decreased the cave defense from 40% to 20%
    • Decreased the mushroom grove defense from 40% to 20%
    • Increased the frozen defense from 10% to 30%
    • Increased the impact resistance from -10% to 0%
  • Changes to the khalifatearmoredhorse movetype:
    • Increased the shallow water, swamp, cave, and mushroom grove mp cost to 4 in all cases
    • Increased the reef mp cost from 2 to 3
    • Decreased the frozen mp cost from 4 to 2
    • Decreased the cave defense from 40% to 20%
    • Decreased the mushroom grove defense from 40% to 20%
    • Increased the frozen defense from 10% to 30%
    • Increased the swamp defense from 10% to 20%
    • Decreased the hill defense from 60% to 50%

User interface

  • Fixed Preferences dialog glitch on < 600 px tall resolutions (i.e. 800x480)
  • Made Hotkeys configuration dialog fit on < 600 px tall resolutions (i.e. 800x480)
  • Various minor improvements for consistency
  • Whiteboard planning system:
    • Added support for planning multi-turn moves
    • Added the option to hide allies' plans during a network game
    • Made action numbers colored according to team color
    • Made plan execution halt upon discovering hidden units

WML engine

  • Added [event]id= support (to protect against duplicates)
  • Added [event]remove=yes|no support (to remove events that have an id set)
  • Implemented sub= and divide= for abilities and weapon specials (patch #2857)
  • new attribute replay_save= in [endlevel]. Defaults to yes, allows WML authors to disable replay saving for a scenario. (bug #18026)
  • [harm_unit] always uses wesnoth.float_label to avoid that an incorrect weapon filter may prevent floating the damage label
  • new key heal_full=yes|no (def no) in [effect]apply_to=type
  • Added SLF support to [event][item] and [remove_item]. [remove_item]: IMPORTANT SYNTAX CHANGE: Default x,y=$x1,$y1 is no longer supported, but instead all locations on the map chosen if no SLF keys are supplied. No wmllint rule in official release but patch in bug #18522. [event][item]: If x = and y= aren't explicitely given no longer throw an error but choose locations according to SLF behavior.
  • Allowed [modify_turns]current= to change to an earlier current turn
  • Added [primary_attack] support to [harm_unit]
  • Added wml tag [store_items]
  • [harm_unit] now supports a harmer unit and experience calculation.
  • Added support for 24 hour ToD.
  • Added WML validation system based on schema validation.
  • Enabled validation for GUI WML.

Miscellaneous and bug fixes

  • Teach wmllint to fix deprecated implicit side=1 in [store_gold], [gold] [remove_shroud], [place_shroud], [modify_side], [modify_ai] actions
  • Fixed bug #17150: fix naming confict with OpenBSD macro by renaming
  • Added "-Wno-strict-aliasing" to the default compiler flags
  • Whiteboard planning system:
    • Made the whiteboard respond better to :droid, :give_control, etc.
    • Removed chat notification upon activating the whiteboard
  • Added advanced preference to ignore the encountered units list and show all unit types in the game Help

Version 1.9.8

Campaigns

  • Fixed deprecation warnings about "empty side="

Language and i18n

  • Updated translations: British English, Estonian, Indonesian, Irish, Latin, Old English, Russian, Vietnamese

Lua API

  • added support for slider and progress_bar widgets to wesnoth.get_dialog_value
  • added support for text_box, slider, and progress_bar widgets to wesnoth.set_dialog_value
  • new wesnoth.races table
  • wesnoth.get_terrain_info can now retrieve the editor_name field

Multiplayer server

  • Handle incoming [whiteboard] data
  • Treat inactive forum accounts as unregistered users to prevent abuse of unverified registrations

User interface

  • Converted New Folder dialog to GUI2
  • Moved Animate Map option from Advanced Preferences to Display
  • Moved Reverse Time Graphics display option to Advanced Preferences
  • Moved Scroll Tracking of Unit Actions display option to Advanced Preferences, renamed to Follow Unit Actions
  • Moved Unit Standing Animations option from Advanced Preferences to Display
  • Removed window decorations from GUI2 lobby
  • Sort the Recruit menu by localized unit type names (feature #18294)
  • Whiteboard planning system:
    • Added a new planned action type: "Suppose dead"
    • Changed behavior of invalid actions (no longer immediately discarded)
    • Disabled undo while planning mode is active
    • Made whiteboard plans visible to allied network players

Terrains

  • Tweaked gameplay-visible names of terrain types, and restored many missing ones.

Miscellaneous and bug fixes

  • CMake build system:
    • Disabled building of libana by default
    • Removed "-Wno-strict-aliasing" from the default compiler flags
  • Fixed bug #18117, saved games with Qatif-al-nar became corrupted
  • Fixed bug #18120, where Khalifate units were not getting the default AMLA
  • Patch #2663: Make wesnoth-optipng work on systems with BSD stat
  • Started working on the new asio based network subsystem. boost.asio (along with boost.thread and boost.system) is now a dependency for the client no matter whether ANA is enabled.
  • Support for gamepads/joysticks

Version 1.9.7

  • Graphics:
    • Terrains:
      • Modified Deep Water tiles for greater contrast with Shallow
      • New Dead Great Tree
    • Portraits:
      • Drake Warden

Language and i18n

  • Updated translations: Afrikaans, British English, Chinese (Traditional), Galician, German, Greek, Indonesian, Irish, Japanese, Korean, Latin, Lithuanian, Old English, Portuguese (Brazil), Serbian, Spanish, Swedish, Vietnamese

Lua API

  • proxy getters and setters for unit attributes extra_recruit and advances_to
  • new function wesnoth.add_known_unit
  • new proxy getters for sides: fog, shroud, hidden, name, color
  • new function wesnoth.get_time_of_day
  • new functions os.clock, os.date, os.time and os.difftime

Multiplayer

  • New "Shuffle sides" option in MP creation list, allowing to randomize player to side assignment (patch #1937 by Quetzalcoatl)

User interface

  • Fix starting location labels being initially invisible in the map editor (bug #17956).
  • Fixed bug #18000, #18099: Show a wrongly entered MP password and crash upon editing this text.

WML engine

  • added mode=replace to [modify_unit] to replace rather than merge unit subtags (does not apply to object, trait, effect, or advancement)
  • new attribute team_name= in SSFs
  • added [event][filter_side] support
  • added support for inline SSF to [chat]
  • added support for inline SSF to [store_gold]
  • added support for inline SSF to [store_side], added attribute "side" in the created array
  • introduced [has_unit]search_recall_list=yes|no (def no) parameter in SSFs
  • support for leader specific recruit lists
    • [unit] extra_recruit= -- defines a unit with a specific recruit list
    • [event] [allow_extra_recruit] [filter] [/filter] type= -- adds unit types to a leader's recruit list
    • [event] [disallow_extra_recruit] [filter] [/filter] type= -- removes unit types from a leader's recruit list
    • [event] [set_extra_recruit] [filter] [/filter] extra_recruit= -- assigns a new recruit list to the leader
  • support for leader specific recall filters
    • [unit] [filter_recall] -- The unit can only recall units which pass the SUF
  • Removed the Liminal alignment
  • Fixed: a divide by zero in the calculate_map_ownership_function function
  • Possibly fixed: rounding errors when using ^ in formulas (bug #18165)
  • Animation will now cycle according to a WML parameter, use with caution
  • Toplevel [tunnel] tags are now ignored rather than cause assertion failures (bug #18201).

Miscellaneous and bugfixes

  • Fixed: issues with singular variant iterators
  • Fixed: the Wescamp script download part
  • Fixed the ingame command line not accepting characters accessible via AltGr (certain keyboard layouts) on windows systems
  • Started using Boost.Program_options for command line parsing (new dependency)
  • Commandline syntax changes:
    • --ai_config renamed to --ai-config
    • --new_storyscreens renamed to --new-storyscreens
    • --no-delay renamed to --nodelay
    • --campaign option split into --campaign, --campaign-difficulty and --campaign-scenario
    • split optional comma-separated defines list from --preprocess= (or -p=) to --preprocess-defines= option
    • dropped --log alias for --log-error
  • Fixed: Compilation on kfreebsd (Debian bug #626313)
  • Fixed: CMake Subversion revision script causing build errors with MSVC.
  • Fix time of day not changing in time area (bug #16584, bug #17543)

Version 1.9.6

Campaigns

Graphics

  • Portraits:
    • Added portrait for Khalifate Hakim.
  • Terrains:
    • New Igloo village

Language and i18n

  • Updated translations: Afrikaans, British English, Dutch, French, Galician, German, Greek, Hungarian, Irish, Japanese, Latin, Lithuanian, Old English, Portuguese (Brazil), Slovak, Spanish, Swedish, Vietnamese

Lua API

  • max_attacks (read) and attacks_left (read/write) field of lua proxy units
  • new function wesnoth.compare_versions
  • new function wesnoth.get_sides

Multiplayer

  • New era: the default+Khalifate era adds a new faction for multiplayer play.
  • New maps: 2p Thousand Stings Garrison, 2p Arcanclave Citadel, 6p Volcano.
  • Updated maps: Caves of the Basilisk, 2p Hamlets, The Freelands, Silverhead Crossing, Sablestone Delta, Fallenstar Lake, Den of Onis.

Unit changes and balancing

  • Increased the pierce attack of the Orc Archer from 5-3 to 6-3.
  • Decreased the HP of the Cavalryman from 38 to 34.
  • Decreased the HP of the Dragoon from 53 to 49.
  • Decreased the HP of the Cavalier from 68 to 64.
  • Changed the 'feral' trait to give 50% instead of 40% defense on villages.

User interface

  • Patch #2625: added a GUI interface to changing control in multiplayer games. The command to access it is currently :give_control

WML engine

  • Patch #2610: changed default for turns in [scenario] tag to -1 (unlimited)
  • Introduced [recall]check_passability=yes|no key (default yes) for placing units only on suitable terrain when recalling.
  • Extended [heal_unit] to also "heal" moves, attacks, statuses and several units at once.

Miscellaneous and bugfixes

  • Changed : replaced all sticky excpetions by lua jailbreak exceptions (fixes bug #17743).
  • Applied patch #2611: removed redundant own_side attribute
  • Applied patch #2600: improved MP creation screen logging
  • Added: New gui2 iterator framework.
  • Patch #2624: Solved enemy leaders never appearing on status table on foggy/shrouded maps, even when visible.
  • Fix linker issues with cmake and scons.

Version 1.9.5

Graphics

  • Portraits:
    • New portrait for Drake Enforcer/Thrasher.
  • Terrains:
    • Moved the ruined desert castle to core.
    • New and improved swamp villages.
    • New and improved tropical villages.
    • New ruined desert keep.
    • New stones and sand drifts embellishment.
    • New tall encampment keep.
    • New water lilies embellishment.
  • Other:
    • New elf-style flag.

Language and i18n

  • Added missing Windows locale associations
  • Fixed Windows locale association for tr/Turkish
  • New translation: Old English.
  • Updated translations: British English, Chinese (Simplified), Chinese (Traditional), Czech, Dutch, Finnish, French, Galician, German, Irish, Italian, Japanese, Portuguese (Brazil), Slovak, Spanish, Vietnamese
  • Updated DejaVu Sans to 2.33

Multiplayer

  • Don't show team labels to observers (feature request #9648).
  • Recalculate map labels to account for team changes when switching players with :control.
  • Renamed /adminmsg command to /report to better reflect its use.

User interface

  • Added: circle to the gui2 canvas.
  • Added: new tip class for tooltips and helptips.
  • Reimplemented: the tooltips use the new tip class and look much better (bug #14818).
  • Fixed: the tooltips no longer stack when the MP dialog is opened (bug #16915, bug #16670).
  • Implemented: the helptips.
  • Changed: the scroll wheel, in gui2 code, now also follows the mouse focus instead of the keyboard focus.
  • Fixed again: Not showing the twml_exception dialog when gui2 was called from Lua (bug #17405).
  • Fix old multiplayer lobby glitches caused by the loadscreen code when skipping to the lobby with -s command line.
  • Add 1.25, 1.75 and 3.0 animation speed factors to display preferences (feature request #15713).
  • Implemented: The expose event in gui2.
  • Fixed: Image widget now honors its minimum and maximum size.
  • Fixed: Black lines in the minimap.
  • Fixed: tooltips no longer capture the keyboard (bug #17797).
  • Changed: Allow underline in the gui2 font style.
  • Fixed: Not wrapping of transient dialog text (bug #17945).

WML engine

  • Added support for map_passable and leader_passable for [placement]
  • Allow [color_range] and [color_palette] nodes to be inserted at top-level by add-ons to globally define custom ranges and palettes.
  • New [tunnel] tag to create teleports between two SLFs for units matching a SUF. The [teleport] ability retrofitted to use this tag.
  • New [allow_end_turn] and [disallow_end_turn] commands to enable/disable the human players' ability to end their turn from the user interface (feature request #13141).
  • [side] tags may now contain [leader] tags to create their leader(s), as opposed to mixing the leader's attributes with the side attributes.
  • New wml action tag [transform_unit], like the {TRANSFORM_UNIT..} macro.
  • [unstore_unit] now accepts a fire_event= key to control firing of (post) advance events and a check_passability= (default yes, previously it was always no/non-existent) key controlling whether to check for suitable terrain when placing units
  • Renamed [teleport]ignore_passability= to check_passability= to get rid of a confusing negation.
  • Introduced [move_unit]check_passability= (default yes, previously it was always yes/non-existent) key to allow disabling the check for suitable terrain.
  • Added TAKE_IT_STRING and LEAVE_IT_STRING arguments to PICKUPPABLE_ITEM
  • Added an engine-defined WESNOTH_VERSION macro that expands to the Wesnoth engine version string.
  • New #ifver/#ifnver preprocessor macro to compare Wesnoth or UMC-defined version numbers as in '#ifver WESNOTH_VERSION >= 1.9.5'.
  • The tags [remove_shroud] and [place_shroud] now take comma-separated lists of sides.
  • The [gold] tag now takes a comma-separated list of sides.
  • Added automatically stored variable this_unit to [modify_unit] for self-reference via $this_unit

Miscellaneous and bugfixes

  • Fixed: g++ compiler warnings.
  • Added: cmake target to build the gui design pdf.
  • Removed support for TinyGUI: Devices with a resolution below 800x480 are not supported anymore.
  • Changed: The minimum screen resolution is 800x480, no need to use --smallgui anymore.
  • Reverted hotkey for clearing cache for Mac OS X back to F5. Control-F5 still works (and is necessary when in windowed mode).
  • Let cmake use absolute locale dirs when set to an absolute path. (Windows always uses a relative path.) (patch #2280)
  • Make it impossible to build Wesnoth without the editor.
  • Fixed a replay OOS issue caused by ToD areas defined outside of events (bug #17783).
  • Changed: when loading a file fails to open try with a .gz file.
  • Unit invalidation is processed in parallel using OpenMP
  • Allow redirection of the logger.
  • Polished gui2 code.
  • Fixed: Newer versions of FriBidi were no longer recognized.
  • wmlindent now handles #ifhave, #ifnhave, #ifver and #ifnver properly in WML.

Version 1.9.4

AI

  • Fixed bugs #15861, #16223, #17206: fix passive_leader and passive_leader_shares_keep.

Campaigns

  • Delfadors Memoirs:
    • Fixed bug #17273: Made difficulty selection conform to the style of all other mainline campaigns
  • Descent into Darkness:
    • New set of portraits.
  • Eastern Invasion:
    • Fixed bug #15950: Made 11_Captured remove units from recall list, preventing units being 'healed' upon load.

Engine

  • Fixed bug #17355: split team initialization into two parts to prevent wrong determination of allied sides.

Formula language

  • Added substring function.
  • Added length function, to determine the length of a string.
  • Added concatenate function.
  • Added sin (sine) function.
  • Added cos (cosine) function.

Graphics

  • Terrain: added transitions for the wood floor.

Language and i18n

  • New translation: Irish
  • Updated translations: Dutch, Finnish, Galician, German, Hebrew, Japanese, Korean, Lithuanian, Russian, Slovak, Vietnamese

User interface

  • Fix alignment of text labels in certain confirmation dialogs (e.g. Quit Game/Editor)
  • Fix behavior of add-ons download dialog on double-click/enter (bug #17345)
  • Several improvements to the gui2 progress bar.
  • New add-ons description dialog with further details, including bundled translations.
  • Add new gui2 drawing widget.
  • Fix gui2 lines drawing glitch, which happens in some rare cases.
  • Fixed: Not showing the twml_exception dialog when gui2 was called from lua (bug #17405).
  • Fixed: Properly validate the height of a portrait (bug #17399).
  • Increase text area dimensions on story screens and improve space use on smallgui configurations.

WML engine

  • New [harm_unit] tag for damaging, and eventually killing, units.
  • [allow_recruit], [disallow_recruit] and [set_recruit] now accept a comma-separated list for side=.
  • Unit types, units, and unit effects, can use small_profile= in addition to profile= to precisely describe portrait locations.
  • New ~BG(color) modifier for setting the background color of an image.
  • Made [inspect] tag work even without debug mode.
  • [move_unit_fake] now accepts an image_mods= attribute, specifying a list of path functions to be applied to the moving fake unit.

Miscellaneous and bugfixes

  • Fix --data-dir command line option
  • Better detect mouse button state when window is activated.
  • Change wiki comment format.
  • Polish wiki_grabber.py code.
  • Names of attack ranges are now read from the range_$RANGE keys in data/hardwired/english.cfg. (feature #17395)
  • Names of attack types are now read from the type_$TYPE keys in data/hardwired/english.cfg.
  • Un-hardwired the [language] block in data/hardwired/english.cfg, and moved the file out of that subdirectory.
  • Add update-po4a-man and update-po4a-manual targets to cmake.
  • Added: Extra validate macro VALIDATE_WITH_DEV_MESSAGE.
  • Fixed: Link to libintl with cmake (bug #17152).
  • Fixed: Better cmake detection for older FriBidi versions (bug #17151).
  • Added: wiki_grabber.py the wml_reference description comment class.
  • Removed support for the "autotools" build system

Version 1.9.3

Campaigns

  • Descent into Darkness:
    • Allow Darken Volk to open gates in A Small Favor part 3 (bug #17250)
  • Legend of Wesmere:
    • Fixed the recursion of the scenario 4 bug.
    • Added the Elvish Horse Archer as alternative advancement for the scout
    • (Singleplayer only) Added the Dwarvish Runemaster as advancement for the fighter.
  • The Rise of Wesnoth:
    • New portraits for Jevyan, Typhon and Rithrandil.

Graphics

  • Terrain:
    • Fixed display of UMC castles (which were being overdrawn by regular human castles).
    • Added ruined cottage and ruined hill village.
    • Added a fence embellishment terrain.

Language and i18n

  • Updated translations: Dutch, Finnish, German, Italian, Japanese, Korean, Portuguese (Brazil), Spanish, Vietnamese

Multiplayer

  • Fixed Siege Castles' description to state the correct map size, 36x36 rather than 40x30 (bug #15835)

Multiplayer server

  • Increased username length limit from 18 to 20

User interface

  • Converted some dialog boxes to GUI2
  • Campaign difficulty descriptions must use Pango markup now
  • Added a new hotkey sequence (by default unassigned) to toggle animated map mode (feature #15976).
  • Removed bottom border from character [message] dialogs.
  • Improved the width of portraits in the wml_message once the maximum text width is reached.
  • Fixed display of unit-specific image mods on the Status Table dialog (bug #16285)

WML engine

  • Created tag [petrify] (bug #17077). Moved [unpetrify] to lua. Syntax changed from [unpetrify][filter] to [unpetrify].
  • New [floating_text] tag for creating floating text similar to the damage and healing numbers.
  • Introduced [recall]fire_event=yes|no (default no) parameter (fixes bug #17083).
  • Deprecated the following macros: FLOATING_TEXT, CAPTURE_FILTERED_VILLAGES, SET_OBJECTIVES, VICTORY_CONDITION, DEFEAT_CONDITION, ON_EVENT, ON_PRESTART, ON_START, ON_SIDETURN, ON_TURN, ON_VICTORY, ON_DEFEAT, ALLOW_UNDO, ON_TILE_ONCE, SIDE_PLAYER, SIDE_COMPUTER, AMLA_TOUGH, ITM_BOOK1, ITM_TREE1, RECALL_OR_CREATE_UNIT, RECALL_OR_CREATE, ITM_GLOWING_BRAZIER, and REDRAW.
  • Make [select_unit] highlight= (def. yes) work as intended for displaying the selected unit's reach (bug #16819)

Miscellaneous and bugfixes

  • Fixed the submerge ability not working on all deep water terrains.

Version 1.9.2

Campaigns

  • Descent into Darkness:
    • Made 'Alone at Last' easier.
  • Legend of Wesmere:
    • Map updates.
    • Implemented gold carryover between the multiplayer chapters.
    • Added extra keeps to keep up with the growing number of leaders.
    • Fixed scenario 04 not being playable.
    • Corrected the objectives of scenario 3.
    • Bug fix for the fleeing orcs in scenario 07.
  • Heir to the Throne:
    • Fixed a bug causing Warven in 'Cliffs of Thoria' not able to move through mountains.
  • Liberty:
    • New set of portraits.
    • Changed Relnan's character to a woman.
    • New (unanimated) sprites for the Rogue Mage unit line.
    • Various balancing changes to the Rogue Mage unit line.
  • Northern Rebirth:
    • Make it possible to choose whether a unit should pick up the Rod of Justice or not.
  • The Rise of Wesnoth:
    • New set of portraits, except for Jevyan and Rithrandil.
    • Gave Jevyan's familiar a custom unit type.
  • Sceptre of Fire:
    • Thursagan can now advance to Dwarvish Arcanister.
    • New (unanimated) sprites for the Dwarvish Miner.
  • Son of the Black Eye:
    • Changes to the objectives and gameplay of 'Clash of Armies'.
  • The South Guard:
    • New portrait for Mal M'Brin.

Editor

  • Verbose terrain names can be specified using terrain.editor_name to be displayed in the editor as "/ ()" (bug #16450)

Graphics

  • Terrain:
    • Any Castle or Keep except Dwarvish can now be combined without large gaps or extra walls.
    • New graphics for wooden bridges.
    • Added variant of chasm bridge for over water.
    • New transitions from all Hills and Mountains to Water.
    • Underground and chasm friendly volcanoes.
    • A new desaturated color of shallow water (Wwg).
    • Much improved lava transitions.
    • A new desaturated ocean color (Wog).
    • New Waterfall automatically placed between chasm and water or swamp.
    • New Sand-to-Water transitions
    • Wave animations on sand
    • Added Ruined Human City terrain
  • Animations:
    • Standing anims: Fencer, Spearman, Dwarf Guard.
    • Idle anims: 2 for the Spearman.
    • Fixed drakes flying or not flying over all the correct terrains.
  • Portraits: Drake Blademaster, Hurricane Drake, Drake Flameheart, alternate Swordsman.
  • Units: New base frame and animations for Mudcrawler.

Language and i18n

  • Updated translations: Chinese (Traditional), Czech, Dutch, Galician, German, Indonesian, Italian, Japanese, Korean, Lithuanian, Portuguese (Brazil), Russian, Shavian, Slovak, Slovenian, Vietnamese

Unit changes and balancing

  • Decreased the physical resistances of the Dwarvish Scout and Dwarvish Pathfinder to 10% and those of the Dwarvish Explorer to 20%.
  • Decreased the village defense of Chocobone from 60% to 40%.
  • Moved the Fire Guardian unit to core.
  • Fixed villages on snow and sand hills providing worst instead of best movement.
  • The complete Dwarvish Runesmith line moved from SoF to core along with new sprites.

User interface

  • Fixed: Addon dialog in title screen shows last host again.
  • Fixed: Addon download progress dialog shows the correct addon name again.
  • Fixed: Fullscreen hotkey works again in the title screen.
  • Fixed: Termination of the game when making the title screen small (bug #16724).
  • Fixed: A resize glitch causing resize events to be lost.
  • Changed: All buttons in the title screen now have a hotkey.
  • Changed: Refresh cache hotkey is CTRL+F5 on the Mac by default now.
  • Fixed: Don't trigger an assertion failure if no tips are defined (bug #16731).
  • Fixed: Enter no longer shows the credits in the title screen.
  • Changed: The title screen now has a maximum width for the tips text.
  • Changed: Improved the layout of the title screen.
  • Fixed: Changing the language updates map and logo in title screen (bug #16631).
  • Fixed: No longer cut off large title screen logos (bug #16632).
  • Refresh cache (F5) works in editor.
  • Add a "Save All Maps" menu item and hotkey in editor.
  • [object] description messages are now shown using GUI2, allowing usage of Pango markup (bug #16859).
  • Whiteboard planning system:
    • Fixed: Crash when creating a planned move on Windows (bug #16705)
    • New "Execute all actions" command bound to CTRL+y

WML Engine

  • id= in SUFs now accepts a comma-separated list.
  • [capture_village] now accepts a full SLF.
  • events can be fired depending on a condition using [filter_condition].
  • Added support for SLF to [terrain]. Note that the SLF's terrain= key is not valid; terrain= specifies the new terrain instead like it used to do. Filtering for terrain can be done with the [terrain][and]terrain= workaround.
  • Renamed [removeitem] to [remove_item].
  • added new parameters directional_x and directional_y to animations
  • added new parameters auto_vflip and auto_hflip to animations
  • Made it so that units affected by [hide_unit] don't appear on the minimap (FR #16796)
  • New [store_reachable_locations] tag for storing the locations reachable (by movement, attack or vision) of units.
  • New [select_unit] tag, with optional fire_event (def. no) and hilight_hex (def. yes) attributes (FR #16819)
  • New [message] scroll= attribute to specify whether the game view should scroll to the speaking unit (defaults to yes) (FR #16843)
  • New key 'random_start' (default = yes) in [terrain_graphics][image] allowing to disable random animation shift in animated terrains.
  • Added a new key "primary" to animation to separate frames that should be treated as primary from frames that shouldn't
  • Made it so that if several [advancefrom] tags for a certain base unit are encountered, the lowest experience= keys from these is chosen (so if there's only one [advancefrom] referencing this base unit the experience needed can be increased).

Miscellaneous and bugfixes

  • Changed: Lowered severity of some gui2 timer log messages.
  • Units created in debug mode now play their recruit animation (FR #16766).
  • Fixed: properly update cmake revision numbers (bug #16483)
  • Fixed: hotkeys dialog in editor is big enough to display them correctly.
  • Fixed: Shifted windmill animation (bug #16529)
  • Files matching *.wesnoth and *.project in add-ons are now ignored by default when uploading

Version 1.9.1

AI

  • Fixed bug #16585: made AI move in targeting phase even if for some of the 'best' units moves to targets are impossible

Campaigns

  • Unified the campaign description of the number of scenarios. Now the number reflects only the battle scenarios of each campaign.
  • A Tale of Two Brothers:
    • New portraits for Arne and Bjarn.
  • Dead Water:
    • Fixed the last scenario not working due to an 'unknown scenario' error.
  • Descent into Darkness:
    • Fixed the 'A Small Favor' scenarios being unbeatable.
  • Eastern Invasion:
    • Increased Owaec's hitpoints and attack stats, and added a new weapon special to his morningstar on levels 2 and 3.
  • Legend of Wesmere:
    • Splitted the multiplayer port into five chapters with 3 difficult levels each.
      • (Beta) Chapter one, a two player campaign, ends after scenario 3.
      • (Beta) Chapter two, a three player campaign, ends after scenario 7.
      • (Alpha) Chapter three, a four player campaign, ends after scenario 13.
      • (Alpha) Chapter four, a four player campaign, ends after scenario 17.
      • (Alpha) Chapter five, a two player campaign, ends with the single player version.
      • There is no savefile compatibility between saves from an older version of Wesnoth.
    • Scenarios
      • Scenario one's objectives changed.
      • Completed a rewrite of scenario 5, changing the objectives, ai and game mechanism slightly.
      • Scenario 7
        • Shortened by letting the orcs flee if their numbers went too low.
        • The player can choose between two different starting positions for Olurf.
      • Rebalanced Scenario 14.
    • Miscellaneous and bug fixes:
      • Renamed some of the locations at the Kalian to fit with the map changes.
      • Fixed scenario number 5 where the gold carrier's overlay was not removed.
      • Fixed the bug with the army split up before scenario number 9.
      • Map and coding updates regarding the new terrain types and graphics.
      • Added keeps to every scenario to match the number of leaders (singleplayer) or sides (multiplayer).
      • Removed the obselete Haldric the second portrait.
  • The Rise of Wesnoth:
    • Made surprise enemy spawns appear in a less immediately dangerous way in 'The Midlands', 'The Swamp of Esten', 'Peoples in Decline', 'A Rough Landing', 'The Vanguard', 'Return of the Fleet' and 'Rise of Wesnoth'.
    • Clarified the early finish bonus conditions in 'Fallen Lich Point' and 'Sewer of Southbay'.
    • Allowed Merman Hunters to be recruited alongside Merman Fighters.
  • Sceptre of Fire:
    • Fixed bug #16542: Alanin not appearing in the epilogue.
  • The South Guard:
    • Fixed a bug causing a freeze at the beginning of 'The Long March'.

Editor

  • Added a standard click sound to brush bar buttons (bug #15635)

Graphics

  • New animations: Merman Hunter ranged animation and defence, Warrior se attack and defence, Drake Flare and Flameheart leadership.
  • New portraits: Inferno Drake, Mermaid Initiate alternate, Goblin spearman alternate
  • Terrain:
    • Tropical Ocean added
    • Improved transition between void and off-map and with both and the oceans.
    • Snowy Human City Village added
    • Muddy Quagmire (Sm) added - alias of swamp
    • Old Desert Mountains replaced with a non-green version of the mountains
    • Slightly tweaked dirt colors and new, smooth dirt transitions
    • Better transitions for Cobbled Road, Clean Cobbles, and Overgrown Path
    • Fixed hard edge on immpassible mountains clouds.
    • Fixed Transition of leaf litter to water.
    • Fixed hard edge on top of cave beams
    • Fixed lava drawing extra transition on off-map
    • Any Castle or Keep except Dwarvish can now be combined without large gaps or extra walls.
  • Better rendering of unit in water: transparency decreases with depth.

Language and i18n

  • Updated fonts: DejaVu 2.32
  • Updated translations: Chinese (Simplified), Chinese (Traditional), French, German, Hungarian, Indonesian, Japanese, Lithuanian, Polish, Russian, Slovak, Vietnamese

Multiplayer

  • Updated maps: 4p Hamlets.
  • Updated most of the maps taking advantage of the new terrains.
  • Side vision is now switched before the healing phase of the turn (only visible in hotseat)
  • Re-added the old MP lobby.

Terrain WML

  • Updated height adjust of desert, orcish, and snowy keeps.
  • Fixed broken aliasing of the wooden floor.
  • Stop using negative unit height adjust for water terrains.
  • Chasm bridges can now be placed on any terrain, and the lit-by-lava variants are automatically used when placed over lava.
  • Removed village terrains: ^Voha, ^Voh, ^Vhms, ^Vhm, ^Vcha, ^Vch, ^Vcm. See the village aliasing change listed below.

Unit changes and balancing

  • Decreased the melee and ranged attack of the Footpad from 5-2 to 4-2.
  • Decreased the XP requirement of the Mage from 60 to 54.
  • Decreased the XP requirement of the White Mage from 150 to 136.
  • Decreased the XP requirement of the Mermaid Priestess from 150 to 132.
  • Added the Ghast unit from DiD to core with new base frame and animations.
  • Made the Giant Rat have a normal AMLA instead of an AMLA with no fullheal.
  • All bats are now given a 'feral' trait which caps their defense on villages to 40% and also making them receive only one random trait.
  • All villages except for water and swamp villages are now aliased to both village and the terrain they're placed on, giving best movement and defense of both.

User interface

  • Changed: the title screen is now gui2 (bugs #12906, #12908 and #15987).
  • Use red/green color for damage in sidebar when modified by bonus/malus
  • Placing a waypoint on a capturable village will now make the unit pause there to capture it (FR#16603)
  • Fixed bug #16653: Avoid markup when calculating the text length for ellipse text (Debian bug #547476).
  • Damage type tooltip now also shows damage after resistance calculation.

Whiteboard

  • Added cost display for planned recruits and recalls
  • Fixed bug #16554 : Infinite attacks with the whiteboard

WML Engine

  • Added tag [kill][secondary_unit] for specifying the killing unit.
  • Added a LOW_MEM define to WML to be able to adapt WML to low memory builds.
  • Added event: side turn X
  • Added event: turn X refresh
  • Added [chat] tag for outputting public or private messages to the chat.
  • Added events: turn end and turn X end
  • Added events: side turn end, side X turn end, side turn X end, and side X turn Y end
  • Added "variations" key and "@V" symbol in [terrain_graphics] (syntax is not final, and may change later)
  • Fixed a bug causing the PUT_TO_RECALL_LIST macro to freeze the game.
  • Modified [set_variable] "divide" so that it always performs a floating-point divide.
  • Allow time_area to define local time of day on map border (bug #16508)
  • Allowed negative defense values as a way to set upper bounds, e.g. village=-60 means that a unit cannot have less than 60 def (more than 40% def) on terrains containing villages.

Miscellaneous and bug fixes

  • Removed: statistics upload code.
  • Changed: compiler mode set to c++98
  • Optimize terrain rules which speed up cache creation and loading
  • Optimize rendering of flying units
  • Fix crash when attacking in fog (using teleport+attack to a fogged village)
  • Fixed a bug causing turn counter in the objectives dialog to duplicate when the objectives are viewed several times.
  • Replace "working peasant" (indicating missing images in debug mode) by half-transparent "Image not found"
  • Improved rendering algorithm: reduced memory requirements and a much faster render loop; very noticable on big maps
  • Improved framerate by removing useless 20ms delay between frames.

Version 1.9.0

AI

  • Fixed bug #15994 : Formula AI candidate actions specified in [side][ai] don't always work.
  • Fixed bug #16406: Broken AI of SoF 1, and improved upgrade procedure for old-style AI config.

Campaigns

  • An Orcish Incursion:
    • Made 'Valley of Trolls' easier on the easiest difficulties.
  • Dead Water:
    • New campaign added to mainline from the Wesnoth-UMC-Dev Project's repository (Intermediate level, 13 scenarios)
  • Descent into Darkness:
    • 'A Small Favor' (part 1) now gives an early finish bonus.
    • Dela is no longer invulnerable in 'Alone at Last' but cannot be safely assassinated.
  • Eastern Invasion:
    • New (unanimated) sprites for Owaec.
    • Made it slightly easier to rescue the knights in 'Mal-Ravanal's Capital'.
    • Increased the turn limit in 'Two Paths' from 18/16/14 to 18/17/16.
  • Heir to the Throne:
    • Made 'Cliffs of Thoria' much easier.
    • Made 'Isle of the Damned' slightly easier.
  • Liberty:
    • Increased the difficulty of 'Unlawful Orders', 'The Grey Woods' and 'The Hunters' and 'Glory'.
  • Northern Rebirth:
    • In Showdown, you recover full gold only if Sisal survived the previous scenario.
  • Son of the Black Eye:
    • Increased the turn limit in 'Black Flag' from 30/25/20 to 30/28/24.
  • The South Guard:
    • A new set of story art by Scavenger.
    • In 'Vengeance', the final objective is now revealed at the beginning of the scenario.
    • New images for the Infantry Lieutenant and Commander by Rhyging5
  • Scenarios in Eastern Invasion, Liberty, Northern Rebirth, Son of the Black-Eye and The Rise of Wesnoth which feature computer-controlled allies now allow you to affect their behavior via the right-click menu.

Graphics

  • Added new portraits for: the Orc Archer, Crossbowman, Slurbow, Sayer, several new Orc Grunt line alternates, Draug and one alternate, Ghoul, Skeleton Archer line, Giant Mudcrawler, Orc Leader/Ruler, alternate Leader and Sovereign, alternate for Loyalist Swordsman, Drake Fighter, Burner.
  • New animations (not yet including leading animations) for Drake Flare and Flameheart, Dwarf Lord ranged attack, Dwarf guard melee attack, Dwarf Pathfinder idle, Ruffian attack and defend, Spearman s and se attack.
  • New base frame and animations for Armageddon Drake.
  • Fixed bug causing Drake Clasher's animation to display incorrectly.
  • Added missing help version for Sea Serpent portrait.
  • Items & scenery: New anvil, and revised trash and lighthouse
  • Two new flag styles.
  • Animate terrain in editor
  • New advanced preference to use a local ToD color-shift
  • Added framework allowing to draw various arrow styles on the map.

Language and i18n

  • Updated translations: British English, Catalan, Chinese (Simplified), Chinese (Traditional), Czech, Dutch, Estonian, Finnish, French, Galician, German, Hungarian, Indonesian, Italian, Japanese, Latin, Latvian, Lithuanian, Polish, Russian, Serbian, Spanish, Slovak, Vietnamese
  • Updated DejaVuSans to 2.31
  • Fixed bug #15653: Made untranslateable strings translateable.
  • Fixed bug #15843: Made untranslateable strings translateable.
  • Fixed bug #15934: Flushed image cache when changing language
  • Fixed bug #15937: Made untranslateable strings translateable.
  • Make map labels store translatable strings, so when the language changes, the labels also use the new translation.

Multiplayer

  • Updated map: Ruins of Terra-Dwelve.
  • Fixed bug #15865: missing WML Child error.
  • Added the winner of the first Wesnoth map competition, the 2 player map "Elensefar Courtyard" by krotop.

Music and sound effects

  • New version of "Northerners" by Stephen Rozanc (TreizeCouleurs)
  • New sounds for wolves and wolf riders. Removed all old wolf-* sounds.

Terrain

  • all villages except water and swamp villages can now be placed on any base terrain
  • orcish, elven and human snow villages are now aliased to village,snow instead of just to village
  • orcish and human snow hills villages are now aliased to village,snowhills instead of just to village,hills
  • animated terrain animations are not synchronized anymore
  • reworked macros to handle animations
  • added new stone-wall-lit terrain
  • made all animated terrains use the new macro system
  • added a new "snowy castle" terrain
  • added new mausoleum scenery
  • added new "snowy fort"
  • added new "desert castle"
  • added new "tropical water"
  • added new "dead grass" terrain
  • improved dry grass "savanna" terrain
  • improved green grass "grassland" terrain
  • improved "desert road" terrain
  • added new "dark dirt" terrain
  • added new "small stones" embellishment
  • added new "small mushrooms" embellishment
  • fix for dwarven castle to cave wall alignment issue by Alarantalara
  • made encampment and orc forts use regular dirt rather than a custom terrain
  • created new editor group: "embellishments", and added desert plants to that group
  • improved snow terrain
  • added "leaf litter" terrain
  • added new "mine rail tracks" terrain
  • added 3 new variants for log cabin
  • added impassable snow mountains
  • adjusted the color of various terrains for a more coordinated appearance
  • added new dry hills terrain
  • new ford that works with animated water
  • improved cobbled road now also used for castle (not keep) floor
  • new etherial abyss terrain added to mainline
  • flower base terrain is deprecated, now available as an overlay
  • added new clean cobbled road terrain
  • added castle to chasm transitions
  • improved human city village
  • Dark flagstones mainlined from UtBS
  • added castle to lava chasm transitions
  • chasm type terrain now blend nicely with void and off-map
  • new banks for transition between flat or cave terrains and water
  • adjusted all underground terrain to harmonize with other terrains
  • improved mini-map appearance for most chasm, wall and grass terrains
  • stone path now matches other terrains
  • added wooden floor terrain
  • added mushroom farm terrain
  • added volcano terrain.
  • added a special blend transition for mountains next to chasms
  • added snowy encampment
  • special snowy chasm appears next to snow terrains
  • added earth-toned chasm
  • added earthy cave floor
  • added hewn cave wall, earthy cave wall, and earthy hewn cave wall.
  • animated water and swamp now use a double-sided transition to blend gradually into each other

Terrain WML

  • rename TRANSITION_RESTRICTED and TRANSITION_RESTRICTED2 to OVERLAY_ROTATION_RESTRICTED and OVERLAY_ROTATION_RESTRICTED2
  • All unused macros are slowly removed to try to get a logical and complete subset of macros
  • Allow to use local ToD terrain variants in [time_area]
  • ToD key in terrain [variant] now accept a list of ToD
  • New key 'set_no_flag' in [tile] which combines 'set_flag' and 'no_flag'

Units

  • Giant Rat moved from DiD to core.

User interface

  • Added the era AI in the list of AI shown when opening a game
  • Added dialog for installation of add-on dependencies
  • Removed the unused gui2 menu bar
  • Added a window register framework
  • Enabled the --new-widgets MP create dialog again
  • Enabled the hidden join observe buttons per row
  • Enabled alignment in labels
  • Avoid resizing when next or previous button is pressed in the --new-widgets title screen
  • Added gui2 progress bar widget
  • Added "animated" logo to the --new-widgets title screen
  • Fixed the language is refreshed after the language is changed in the --new-widgets title screen
  • Implemented bug #15623 (patch #1568): On change resolution screen, widescreen resolutions are now marked as such
  • Added tooltips to the --new-widgets title screen
  • Added a place holder upload statistics button in the --new-widgets title
  • Fixed bug #15716: Lobby crash when refreshing with filtered out games
  • Fixed bug #15768: Avoid parts of the previous game show in the lobby
  • Fixed bug #15727: Allow wml message titles to wrap screen
  • Added the total number of villages to the status table lists
  • Added a new attack dialog, available for testing with --new-widgets
  • Patch #1645: Fixed a bug sending keyboard events to deactivated controls
  • Deprecated the resize flag for gui2 image, use the resize_mode instead
  • Patch #1639: Added handlers for keyboard (arrow keys) to move gui2 sliders
  • Added new experimental list box implementation, available for testing with -DGUI2_EXPERIMENTAL_LISTBOX
  • Damage in sidebar now also take account of ToD and leadership
  • More info in the weapon tooltip (damage bonus calculation and swarm effect)
  • Terrain defense tooltip show terrain's info and defense calculation
  • Level tooltip shows next advancements
  • Each trait and special attack has its own tooltip
  • Most sidebar tooltips have now a category indication
  • Tooltips of ellipsed text are grouped in the last visible item's tooltip
  • Increase a little tooltip's opacity
  • Render grid above foreground terrain
  • Clicking on some elements of sidebar now open the related help page
  • Display weapon stats in recruit/recall dialog the same way as in sidebar
  • Accuracy/parry have its own line and tooltip in sidebar.
  • Add first, last, play and back buttons to storyscreens
  • Remember recall list sorting order (FR #16149)
  • accelerated movment speed to 200ms per hex
  • --logdomains accepts a filter argument and uses multiline output
  • New mouseover image instead of simply highlighting the hex
  • Tab completion for :commands and units search function
  • Fixed #15781: On maps with statues player can pick statues team
  • Fixed move+attack not interrupted when ambushed at destination
  • Stop disabling mouse during attack+move
  • Added the whiteboard planning system (GSoC project), see release notes for details.
  • Allowed viewing terrain defense for the selected unit outside of your turn.

WML Engine

  • Added wml action tag: [modify_unit]
  • Added wml action tag: [move_unit]
  • Deprecated [set_variable]'s random key, use rand instead
  • Renamed [unit][status] healable to unhealable so it can default to 'no'
  • Added 'side X turn refresh' and 'side X turn Y refresh' events
  • Add ~DARKEN() counterpart to ~BRIGHTEN()
  • Implement min_value for [illuminates]
  • Added lua functions wesnoth.get_side_count() and wesnoth.is_enemy(a,b)
  • Add 'recall_cost' key for [side], to override [game_config]'s default
  • Add [replace_schedule] tag, which replaces the time of day schedule
  • Trying to include a missing macro/file is now a fatal error
  • Added #ifhave/#ifnhave for testing existence of files and directories
  • Added [volume] tag, which allows game volume to be changed during scenarios
  • Prototype support for [set_global_variable]
  • Prototype support for [get_global_variable]
  • Prototype support for [clear_global_variable]
  • Added scroll_to_leader attribute to side tag. Default value is 'yes' (bug #15921)
  • Draw the map border over _off^_usr tiles too.
  • Add 'immutable' key to [label], defaulting to true (feature #16078)
  • Added search_recall_list key to [have_unit] tag
  • Added [move_units_fake] tag
  • Added reveal_map key to [endlevel] tag
  • Rename all "colour" keys to "color" (in [side] and [label]), same for "colour_lock"
  • Allow a [case] value to take comma-separated values
  • Move fog/shroud image definition into game_config.cfg
  • Add new game_config keys "hex_brightening", "hex_semi_brightening", "mouseover_image" and "selected_image" to tune mouse interface
  • Fixed bug #16219: Handled ToD areas in a LIFO way, so that it is possible to override them without first removing them
  • [effect] violate_maximum= (for use when increasing HP) takes a real boolean value now instead of taking any non-empty value as "true".
  • Allow checking out terrain defense for units when it's not your turn.
  • New image path function: dst~BLIT(src[, x, y]) blitting src image on dst image at coordinates (x,y)
  • Fix bugs in 'illuminates' when using non-standard values. Now max and min_value only clamps the effect of the illuminates bonus, but ToD and terrain effect can pass them.
  • Added [gold_carryover] tag to the [objectives] tag.
  • Added [note] tag to the [objectives] tag.
  • Added caption= and show_turn_counter= keys to the [objective] tag.
  • New WML macros: ON_DIFFICULTY (a macro that makes using different values based on difficulty simpler), ON_SIGHTING (a substitute for sighted events)
  • Removed WML macros: NEUTRAL_SIDE

Miscellaneous and bug fixes

  • Added a network library for asynchronous server & client applications (ANA)
  • Rewrote the network module using this (ANA) library
  • Added help entry when new unit is created directly in the recall list
  • Defaulted log level to warning again
  • better fix for bug 14765 now that string freeze is off
  • Fixed picking the proper locale, the problem only occurred on some systems
  • Added a way to compile wesnoth on windows by using CMake + MSVC9.
  • Added the possibility to specify absolute paths for "--config-dir"
  • Added more command line arguments for starting a campaign + scenario
  • Added command line "--preprocess" to preprocess a specified file/folder and output the result
  • Added command line "--preprocess-input-macros" to specify extra input macros
  • Added command line "--preprocess-output-macros" to output the preprocessed macros to a file
  • Added command line "--data-dir" to explicitly override the data directory
  • Fixed the ping timeout not waiting for the default ping interval when ping timeout is not set to 0
  • Fixed a bug in scoring of AI recall list. Patch by billynux.
  • Strip whitespace characters from .ign patterns (bug #15902)
  • Fixed wesnoth_addon_manager's support for .ign files (bug #15846)
  • Never allow uploading *.pbl files (case-insensitive) to the add-ons server from the regular game client.
  • When warning the player about installing add-ons with missing dependencies, make 'OK' and 'Cancel' work as expected (bug #15960)
  • Fixed tab completion not working in the new lobby (bug #14730)
  • Fixed compilation for g++ 4.5
  • Cleaned up the gui2 code at various places
  • Don't crash if a [story] [part] [if] misses [then] or [else] (bug #16028)
  • Fix a crash on OS X caused by passing invalid utf8 to pango (bug #16020)
  • Hidden weapons (attack_weight = 0) no longer skew the best weapon selection
  • Prevent dereferencing freed memory when reporting malformed maps, i.e. when using an invalid terrain type
  • Fixed attack predictions for combats with a unit leveling up thanks to a kill
  • Fix rare layer's order bug about unit drawn above big south-west unit
  • Improvements to make Wesnoth compile better with g++-4.5 in C++-0x mode
  • Added ":undiscover" to clear all your discovered units from help
  • Added ":turn" to change the current turn/time of day in debug mode
  • Added ":turn_limit" to change the turn limit for a scenario in debug mode
  • Fix a crash when a sighted event killed a unit just before a fight
  • Fixed bug #16171: Disable commands during [animate_unit]
  • Fixed bug #16235: Avoided displaying an empty menu and therefore choosing a random weapon, when there is none
  • Fixed bug #16243: Added detection for server replays, as they are missing the core [lua] tags
  • Fixed bug #16261: Added test for invalidated death due to positive hp after the 'die' event
  • Fixed bugs when a waypoint is unreachable
  • Fixed attacker still getting resting bonus after attack using movement_used=0
  • Fixed [store_time_of_day] for earlier turn
  • Fixed _off^_usr not using the tile_image of theme.
  • Patch #1727: Fixed revision.hpp generation with cmake 1.8(.2)
  • Added debug command ":foreground" to better visualize foreground terrains
  • Added debug command ":layers" displaying various layer info from the hex under the mouse.
  • Reducing cache loading for title screen, --test, --editor and --load
  • Removed Lua dependency, the source is now in the source tree
  • Introduced a new allignement called "Liminal". Those units fight best during the twilight times of day.
  • Fixed #16343: wmllint wants to add translation markers to the empty string in description=
  • Reduce individual memory cost of each terrain image

Version 1.8.0

AI

  • Fixed bug #14247: Make formula AI behave correctly if the side has only 1 potential recruit.
  • Added support for candidate actions written in lua.

Campaigns

  • Descent into Darkness:
    • Added new Giant Rat base frame and animations.
  • Legend of Wesmere:
    • Fixed bug #15631: Scenario 3: arrival of Kalenz failed
    • Fixed bug #15679: Scenario 17: leader of side 2 is missing
    • Fixed bug #15680: Scenario 18: wrong recruitment options
  • Under the Burning Suns:
    • Scenario 2: speed up AI turn.

Graphics

  • Added new Cave Spider and Cuttle Fish graphics

Language and i18n

  • Added new translations: Serbian Ijekavian, Serbian Ijekavian Latin
  • Updated translations: Czech, Finnish, French, German, Hungarian, Japanese, Latvian, Lithuanian, Russian, Serbian, Spanish, Slovak

Multiplayer

  • Updated maps: Cynsaun Battlefield

Music and sound effects

  • Fixed bug #15668: The lobby will play a random music playlist, configured by [lobby_music], instead of looping the main menu song
  • Fixed bug #15669: The titlescreen will play a random music playlist, configured by [titlescreen_music], instead of looping the main menu song First song played will still always be the main_menu theme.

User interface

  • Worked around bug #15561: Resizing the lobby made the items in the game listbox too small

Miscellaneous and bug fixes

  • Added the first draft of the gui2 design documentation
  • Defaulted log level to error again
  • Fixed bug #13882: Map which is invalid aborts map selection
  • Fixed bug #14114: Checksum operations fail against certain scenario events
  • Fixed bug #15545: Recall list gone after loading savegame created in linger mode
  • Fixed bug #15598: Can't move units after reloading game
  • Fixed bug #15601: Replay crashes when replay log messages are enabled
  • Fixed bug #15656: OOS errors in LoW from differing starting gold
  • Fixed a segfault due to missing seed-attribute of an attack in a replay
  • Fixed a graphics bug with the Spearman's attack anim noted by zookeeper
  • Worked around bug #13333: Limit the maximum length of the mp command dialog as workaround for bug (This workaround is only implemented for Windows and Mac)
  • Worked around a rare assertion failure when resizing the lobby

Version 1.7.15-1.8rc1

AI

  • Set RCA AI to be the default AI for single-player campaigns.
  • Fix bug #15390: add a try_delete action to modify_ai which has 'delete if exists, don't complain if not exists' semantics
  • Fix bug #15013: make AI gotos persist between turns when set by WML, make the AI don't use gotos for normal moves.

Engine

  • Fix bug #15542: if game encounters a base_unit that refers to a unit that the game cannot find, throw exception instead of failing assertion.
  • Add a list of team units and a dedicated unit mode to gamestate inspector (launched by :inspect command and [inspect] tag).

Language and i18n

  • Updated translations: Chinese (Traditional), Czech, German, Hungarian, Japanese, Serbian

Multiplayer

  • Fix bug #15541: fix OOS on [unit] tag generating different traits because of usage of local RNG instead of MP RNG.
  • Fix bug #15560 for Dark Forecast: fix OOS in Dark Forecast caused by unit advancement not properly synced across the network.

Music and sound effects

  • Added new music track, "Weight of Revenge" by Doug Kaufman

User interface

  • Improved resizing of a window when the contents don't fit, fixes the window scrollbars in the MP lobby
  • Fixed redraw invalidation issues in the MP lobby

Version 1.7.14-1.8beta7

AI

  • Allow to write AI components in LUA
  • Implemented FR #15465: 'protect' goal was split into protect_location, protect_unit, protect_my_unit [goal] tags. protect_my_unit can be used as a direct replacement for protect_leader.

Graphics

  • Fixed bug 15344: missing ice to nothing transition
  • Fixed weird side effect of long first frame in standing anims
  • Fix bug 15366 : overlay terrains badly interacting with submerge and height adjustments
  • Fix bug 15544 : bad transitions between roads and deserts with overlay

Language and i18n

  • Updated translations: Catalan, Chinese (Traditional), Czech, Estonian, Finnish, German, Greek, Italian, Japanese, Lithuanian, Polish, Serbian

Multiplayer

  • Make allow_changes attribute truly work
  • Fixed players getting different side colours across scenarios of mp campaigns
  • Fixed bug 14754: Host can start game before the client has selected a leader (Debian bug #555964)
  • Fix bug #15380 (cl in multiplayer local game doesn't work)
  • Fix bug #15382 (Player doesn't get transported to the next scenario)
  • Fix bug #15383 (Multiplayer Campaigns can't be loaded from savegame)
  • Fix bug #15391 (Warnings in multiplayer games)
  • Fix bug #15398 (Multiplayer Campaign aborted after endlevel)
  • Fix bug #15399 (Leaders of the ai sides in LoW multiplayer scenario2 are missing)
  • Allow a 1-sides game to be started (Debian bug #568029)
  • Fixed A New Land not working when there are empty sides

User interface

  • Rewrote the sizing code of the tree view widget
  • Don't show turn dialog once the level has ended
  • Fix the empty games in the MP lobby game list
  • Fix redraw glitches of the scrollbars when resizing a widget
  • Fix a crash when using the scrollwheel (bug #15156)
  • Fix an issue where the lobby chat log didn't resize properly
  • Fix the translation of certain lobby strings
  • Enable the scrollwheel for the tree view
  • Enable the scrollwheel for the scroll label

Miscellaneous and bug fixes

  • Fix bug #15429 (Units created by WML can only get the Neutral alignment); this also affected MP leaders
  • Fix UB when closing a window, caused by the children of the window accessing the destroyed window members

Version 1.7.13-1.8beta6

AI

  • Port [protect_leader], [protect_unit], [protect_location] to new-style ai config, which is a goal with name=protect, which accepts a SLF [criteria].
  • Changed names of AI log domains, to have a more uniform naming style. Most names became shorter.

Campaigns

  • Fixed a bug in several scenarios causing some enemy units to disappear when loading a save

Engine

  • Fix bug #15146: made kill event with animate="yes" recheck the presence of unit before animating, fixing the assertion failure (in case the unit is removed by other wml events like last breath)
  • All unit-related images are team colored, this includes missiles and haloes

Graphics

  • Add and wire two new Drake attack icons.

Language and i18n

  • Updated translations: Czech, Finnish, French, German, Hungarian, Italian, Lithuanian, Polish, Portuguese (Brazil), Russian, Serbian
  • The manual now does support translations of alternative texts for images (bug #14874)

Multiplayer

  • An early test version of the multiplayer port of "Legend of Wesmere" is available when starting wesnoth with the commandline argument "--debug"

User interface

  • Add a new tree view widget
  • Use tree view widget as test in campaign dialog (needs --new-widgets)
  • Use tree view widget in the lobby

Miscellaneous and bugfixes

  • Fixed serveral issues found by cppcheck

Version 1.7.12-1.8beta5

AI

  • Fixed unit_at formula ai function to return null on null input

Campaigns

  • Fixed a bug in several scenarios causing some enemy units to disappear when loading a save

Language and i18n

  • Updated translations: Czech, Finnish, French, German, Hebrew, Italian, Latin, Russian, Shavian, Slovak, Spanish

Multiplayer

  • Non-human null controllers are no longer set to ai
  • Don't allow a 0-sides game to be started (Debian bug #563310)

Music and sound effects

  • New version of sad.ogg (Sad music) by Tyler Johnson

User interface

  • Switched back to the tiled background for gui2
  • Improved to looks in tiny-gui
  • Add a new transient error message
  • Convert several old style message dialog to the new style
  • Allow listboxes to add rows at every place instead of at the end only
  • Improved the speed of the new lobby

WML Engine

  • Removed bogus merging of the old unit type's movetype when advancing (fixes bug #15055)
  • [unit] upkeep now accepts the 'free' value as a synonym for 'loyal' It was widely used this way and worked because its integer value is 0

Miscellaneous and bugfixes

  • Fix errors in tutorial when the player unexpectedly kills certain enemy units in scenario 2 (bug #15037)
  • Fix orcs being able to play their turn twice in tutorial scenario 2 (bug #14926)
  • Fix missing dialog in tutorial scenario 1 (patch #1399)
  • Fix scrolling during animation (bug 13106)
  • Fix drakes tipping their wings in the water when flying
  • Fix some assertion failures when showing/hiding listbox items
  • Fixed serveral issues found by cppcheck
  • Fixed drawing glitches with tiled gui2 windows in the lobby
  • Fix some doxygen warnings
  • wesnoth-optipng can now process selected files given on command line
  • Allow listboxes to better request the update of their contents

Version 1.7.11-1.8beta4

Language and i18n

  • Updated translations: Chinese (Simplified), Estonian, French, Latvian, Lithuanian, Portuguese (Brazil), Russian, Serbian, Slovak, Spanish
  • Manual: updated CSS style to cover Docbook markup for GUI elements

User interface

  • Add a new repeating button widget
  • Scrollbar buttons now keep scrolling when kept pressed down
  • Optimized the speed of the --new-widgets game load dialog
  • Waypoints of multi-turns moves are now saved between reload

WML Engine

  • Rework of semantics of [unit] tags. Added 'placement' attribute. Fix bugs #14373, #14444, #14451 and other 'duplicated unit' issues in LoW

Miscellaneous and bugfixes

  • Scrollbar containers now use the button super class
  • Allow a gui2 timer delete itself in its callback
  • Fix various bugs when a unit has more MP than its maximum
  • Fix not redrawing a grid when set to hidden
  • Add helper functions to show/hide rows in a listbox

Version 1.7.10-1.8beta3

Campaigns

  • Under the Burning Suns:
    • Fix locations of some items in "In the domain of the dwarves" (bug #14925)

Graphics

  • Added attack icon for Drake Ram attack, and for UtBS's Giant Ant.

Language and i18n

  • Updated translations: French, German, Hungarian, Italian, Latvian, Lithuanian, Polish, Portuguese (Brazil), Russian, Serbian, Slovak

User interface

  • Don't reserve space for scrollbars in message dialogs
  • Ctrl-f for fullscreen works again in the MP lobby (bug #14759)
  • Resizing the MP lobby no longer crashes randomly

WML Engine

  • Fix bug #14859: [time_area] created by event are not saved
  • Allow modifications to change unit ellipse

Miscellaneous and bugfixes

  • Add a minimap cache for gui2
  • Add a new super class for the button
  • Added a new gui2 timer engine
  • Add hotkey support for gui2
  • Change Drake Flare and Flameheart weapon names to match new weapons
  • Converted the hover tooltips to use the new timer engine
  • Fix bug #14865: move+attack into hex with ambusher causes crash
  • Fix the addon upload script to include the translate flag (patch #1387)
  • Fix the gui2 unit tests
  • MP lobby refresh to the new timer engine
  • Optimize AI recruitement and movement phases
  • Reduced header dependencies
  • Remove spurious hover error messages
  • Shorter "Initializing Display" phase when staying in same campaign/MP

Version 1.7.9-beta2

AI

  • new [limit] subtag of [value] of ai_default::recruitment implementation of recruitment aspect - allow easy limiting of number of concurrent recruits of specific type in the field
  • new rate_action formula_ai function which returns a rating of attack analysis.
  • values of most ai aspects are now readable from formula ai (aggression, avoid, attacks, attack_depth, caution, grouping, leader_aggression, leader_value, number_of_possible_recruits_to_force_recruit, passive_leader, passive_leader_shares_keep, recruitment_ignore_bad_movement, recruitment_ignore_bad_combat, recruitment_pattern, scout_village_targeting, support_villages, village_value, villages_per_scout)
  • Fixed Bug #14768: made AI observe changes in allowed recruits, preventing situations where AI does not recruit because it thinks that it can not do so.

Campaigns

  • Northern Rebirth:
    • Fixed a few graphic bugs with map items
  • The Rise of Wesnoth:
    • Removed the undead trait from several custom bat units

Graphics

  • New animations for the Chocobone.
  • Change which Orc Grunt portrait appears is the default.
  • New portrait for Orc Warrior
  • New portrait for Hamel (tHoT)

Language and i18n

  • Updated translations: Czech, French, German, Italian, Latin, Lithuanian, Polish, Portuguese (Brazil), Russian, Serbian, Slovak.

Multiplayer

  • Updated maps: Caves of the Basilisk, Hornshark Island, Howling Ghost Badlands, Sablestone Delta

Music and sound effects

  • Updated music tracks: Legends of the North, Breaking the Chains

User interface

  • Show selected item after a listbox resize (bug #13995)
  • Increasing the size of the MP lobby works properly (bug #14759)
  • Fix waypoints ignored for multi-turns moves
  • Toggle waypoint now works for each one, not just the last.
  • Reclick on the selected unit now clear all waypoints
  • Logo coordinates on the title screen now relative to center of the logo.

WML Engine

  • Added [open_help], fixes Bug #11061 (forgot to commit that one long time ago)

Miscellaneous and bugfixes

  • Optimize "Initializing teams" loading phase
  • Undraw floating labels when a gui2 dialog closes (bug #14816)

Version 1.7.8-beta1

Campaigns

  • Under the Burning Suns:
    • Do not allow player units to get pass the Dwarf Ghost without completing the side quest in Tunnels of the Trolls (bug #14379)
    • Fixed a few visual glitches in some scenarios

Graphics

  • New base frames for Drake Flare, Flameheart
  • New portraits for Grand Knight (alt), Lancer, Orc Grunt (two alts)

Language and i18n

  • Updated translations: Czech, Dutch, Finnish, German, Hungarian, Italian, Latin, Lithuanian, Portuguese (Brazil), Russian

User interface

  • Instead of "crashing" upon invalid markup try to show the raw text
  • Found a better fix for truncating the campaign description (bug #14328)
  • Fix storyscreen buttons occasionally disappearing (bug #13779)
  • Fix not being able to cancel the different version message (bug #14438)
  • Fix not being able to close corrupted file dialog (bug #13764, #14058)
  • Improve display order of unit healing (patch #1343)
  • Fix the new-widgets addon list dialog
  • Add fallback scrollbars if a window doesn't fit (bug #13180)
  • Switch to the new MP lobby
  • Fix a NULL pointer deferring in the hover code
  • Protect against widgets being smaller as expected causing images with negative sizes (bug #14525)

WML engine

  • Added two array element lookup macros, LOOKUP_INDEX and LOOKUP_VALUE
  • Event "turn refresh" is now fired at turn 1 too

Miscellaneous and bugfixes

  • Using a hotkey to reload during an attack no longer disables the mouse (https://www.wesnoth.org/forum/viewtopic.php?f=4&t=27616)
  • Removed some unused Drake macros from animation_utils
  • Add recruitment anims for the Sky and Hurricane Drakes
  • Removed the old stats code (Debian bug #555276, CVE-2007-2383, CVE-2008-7720)
  • undo+redo a multi-turn move now restores the assigned destination

Version 1.7.7

AI

  • Filtering of allowed attackers/defenders in 'attacks' aspect.
  • Fix a serious enough bug in default ai targeting. The bug caused the AI, in certain situations, to make weird shuffle-doing-nothing moves and not seek enemies or their villages
  • Optimize AI targeting phase.

Language and i18n

  • New translations: Shavian
  • Updated translations: Czech, Dutch, Finnish, Estonian, German, Hungarian, Italian, Lithuanian, Russian, Serbian, Slovak, Spanish.
  • Fix a broken markup in the Italian translation (bug #14506)

Multiplayer

  • Updated map: The Manzivan Traps

Units

  • Removed Elder Wose and Shock Trooper from random_leader of the default era.
  • Removed Ancient Wose and Iron Mauler from random_leader of the AoH era.
  • New animation WML and macros for the Drakes
  • Increased the XP required to advance for the Orcish Assassin from 30 to 34.
  • Changed the cold resistance of the naga line from -20% to 0%.

User interface

  • Enabled the new event handler by default now
  • Allow markup in a campaign description (bug #14435)
  • Escape no longer closes the new title screen
  • In recall dialog, use different color and brightness for XP and level
  • In unit list, display invisibility status and change order of columns
  • Update the mouse position after closing a dialog, so the dialog below 'knows' the proper mouse location
  • Fix double click events to be send to the wrong window
  • Fix scrollbars to show up when not needed (bug #13996)
  • Avoid truncating the last line in campaign description (bug #14328)

WML engine

  • Added 'side Y turn' and 'side Y turn X' events
  • Make status "hidden=yes" default, no need to do it manually in WML anymore

Miscellaneous and bugfixes

  • Add-ons download list now takes filtering into account for displaying descriptions
  • Various code cleanups
  • Fixed a lot of issues found by cppcheck.
  • Fixed "Revert all changes" feature in the map editor (bug #14266)
  • Fixed broken illumination overlay in ToD sidebar image
  • gui2 dialogs are now shown in an exception safe way
  • Improve cmake po-update so it doesn't add too many dummy updates
  • po-update2-xx now properly updates all domains
  • Fixed sometimes incorrect update of unit/savegame view when using filter
  • Debug-created units now also have traits and name
  • Fixed broken ambush/invisibility at first turn or at unit creation
  • Fixed ambushing unit not directly visible when discovered
  • Fixed time tooltips (bug #13886)
  • Fixed halo render glitches (bug #14405)
  • Renamed the cmake foo2 targets to foo

Version 1.7.6

AI

  • Stabilized syntax of [modify_ai] tag
  • Reorganized AI macro library
  • Added 'move leader to target' candidate action
  • Added recall capabilities to default ai.
  • Added recall formula ai function and ai.recall_list formula ai attribute.
  • Modified default ai recruitment to recall good units from recall list.
  • Modified default ai recruitment to consider enemy potential recruits during recruitment.
  • Added the capability to control leader goal of allied leaders. Enabled this for certain LoW scenarios.

Animations

  • new animations to help drakes to take off and land : pre-movement, post-movement, draw_weapon, sheath_weapon

Formula AI

  • New 'reduce()' formula function

Graphics

  • New portraits for Merman Spearman, Bat, Merman Netcaster, Nightgaunt, Spectre, Shadow
  • Added a couple of missing frames for the Inferno Drake
  • Show HP/XP bars during leveling animation.
  • When a unit reach a new level, a floating label indicates it.

Language and i18n

  • Updated translations: Czech, Dutch, Estonian, Finnish, French, German, Italian, Lithuanian, Russian, Serbian, Spanish.
  • New translations: Vietnamese

Multiplayer

  • New map: 4p Ruins of Terra-Dwelve

Music and sound effects

  • Added new music track, "Into the Shadows" by Tyler Johnson
  • Fixed bug #14239 (check_fogged ignored by sound sources)
  • Implemented FR #14246 (check_shrouded= for sound sources)

Units

  • Made units with the 'healthy' trait always rest heal but take normal damage from poison.
  • Changed the Drake Glider movetype to give 40% defense almost everywhere.
  • Gave the Fire Dragon 100% fire resistance.
  • Updated the descriptions for the Drake Fighter, Glider and Burner lines.

User interface

  • new gamestate inspector debug dialog (via 'inspect' command and '[inspect]' tag)
  • Rename easy_close to click_dismiss
  • Automatically try to resolve blocked multi-turn moves
  • Better visually differentiate name, type and race in sidebar
  • Add colorized terrain defense info in sidebar
  • In attack dialog, split damages and chance to hit and color the later.
  • The Remove and Update add-ons options are disabled when there are no add-ons installed
  • Add a Description button to the add-ons downloader
  • For move+attack mouse click, now show the attack dialog before the move.
  • In sidebar, add current bonus/malus info from alignement.
  • New option to enable/disable move interruption when an ally is sighted

WML engine

  • Fix silent=yes for objectives
  • Allow [story] [part] blocks to specify the title box alignment with title_alignment=
  • Implemented FR #14246 (visible_in_shroud= for [label])
  • Modified Lua handling of action handlers and WML objects.
  • Added a lua_function= attribute to standard unit filters.

Miscellaneous and bugfixes

  • Fix broken "Skip Ai moves" option.
  • Changed upload log format and defaulted the new uploader.
  • Fix bug #13268 (corrupted replays due to undo of recall/dismiss)
  • Weapon name change for Drake Enforcer.
  • Fixed the unit tests from 'hanging'
  • Fix bug #14160 (carryover percentage in [endlevel] ignored when victory_when_enemies_defeated="yes")
  • Various cleanups to the gui2 code
  • Remove position info from unit list
  • Avoid an assertion failure if haloes are disabled (bug #14297)
  • Fixed linked widgets not getting deregistered upon destruction
  • Fix huge fonts on storyscreens with tiny GUI
  • Fix cmake po-update not doing line wrapping properly
  • Fix bug #14241 (mp campaign timer settings not carried over to next scenario)
  • Started with the a new event handler for gui2
  • Fix unit facings after moving (bug #14336)
  • Fix unit facings after undo/redo
  • Improved the teamcoloring script for images.

Version 1.7.5

Campaigns

  • Legend of Wesmere
    • Scenario 21 redesigned

Graphics

  • New base frame and animations for the Drake Blademaster.

Language and i18n

  • Setup for tracking localized images.
  • Updated translations: Chinese (Traditional), Lithuanian, Serbian.

Units

  • Fixed problems with the Drakes introduced in 1.7.4 (wrong resistances and a possible crash when advancing to the Inferno Drake)

Miscellaneous and bugfixes

  • Optimized the cmake building if both game and tests are enabled
  • Switched to new stats upload mechanism so that stats.wesnoth.org should soon provide usefull data
  • Optimize pathfinding on 1MP terrains.

Version 1.7.4

AI

  • Formula AI debugger (uses -new-widgets)
  • New 'debug()' formula function
  • Fixed crashes and infinite loops on AI turn

Animations

  • Movement have the number of steps done in value and the number of step left in value_second, this allows take-off and landing animations

Campaigns

  • Legend of Wesmere
    • Scenario 3 redesigned
    • Fixed wrong or unclear scenario objectives
    • Scenario 16: Reduced the number of wolf riders

Editor

  • Better support for conflicting terrain letters across add-ons, now in the event of a conflict the terrain will appear in all terrain groups as opposed to appearing in one of them multiple times.
  • Added remembering of the show terrain codes and coordinates options

Graphics

  • New portraits for Ancient Wose, Ruffian, Master-at-arms, Naga Warrior/Myrmidon, Grand Knight, Merman Hunter.
  • Updates to Peasant, Spearman and Swordsman portraits.
  • New melee animation for Thunderguard, Dragonguard.
  • New base frame and animations for Inferno Drake, Fire Drake.

Language and i18n

  • Updated translations: Chinese (Traditional), German, Lithuanian, Russian, Serbian

Music and sound

  • "Journey's End" from Mattias Westlund
  • "Over the Northern Mountains" from Mattias Westlund
  • Added horn signal sound effects

Units

  • New weapon names for a number of drake attacks to account for changes to the sprites.

User interface

  • Removed the hotkey to enable/disable mouse scrolling
  • Added a horizontal listbox
  • New basic support for specifying waypoints (via a new hotkey 'w')

WML Engine

  • Support for [show_if] inside [message]
  • Added ability to change the share_maps team attribute using [modify_side] tag. Be sure to use shroud=yes for that side
  • [side] team_name is now a comma-separated list of teams the side is on
  • [modify_side] user_team_name no longer requires that team_name also be modified

Miscellaneous and bugfixes

  • Removed obsolete code for implicit linked widgets for the listbox
  • [part] caption= is no longer supported; prepend the CAPTION macro to story text instead
  • Fixed 100% CPU usage on storyscreens with no text (e.g. map screens)
  • Fix ODR issues in gui2
  • Remove the boost 1.33 code in the unit tests
  • Fix regression about broken undo after a multi-turn ("goto") move
  • Fix regression about pathfinding poorly using the teleport ability
  • Added extra wiki comment and updated the extractor

Animations

  • Movement have the number of steps done in value and the number of step left in value_second.
  • new animations pre_movement_anim and post_movement_anim to allow take-off and landing animation

Version 1.7.3

AI

  • New AI configuration syntax

Campaigns

  • Two Brothers
    • Replaced campaign specific portraits with mainline portraits
  • Under the Burning Suns
    • Fixed bug #13978: UtBS: "stun" ability doesn't modify enemy ZoC
  • Legend of Wesmere
    • Story only scenarios now display the speaker's name in the title.
    • Ambient sound effects.
    • Redone the campaign's objectives.
    • Added the "Dwarfish Scout" to the player's recruit list.
    • Scenario 19 now requires the player to destroy Saurgrath.
    • Scenario 14 redesigned.
    • Scenario 23 implemented Santi's plan to let half the army defect.
    • Map updates (mostly new alias terrains added).
    • Replaced the campaign image with a transparent one (Thanks to Kitty).

Editor

  • Renamed editor2 to editor pretty much everywhere

Graphics

  • New portrait for the Duelist, Mermaid Enchantress/Siren, Priestess/Diviner, Merman Fighter/Warrior, Fencer, Drake Glider, Merman Hoplite, Goblin Impaler, Rouser, Merman Triton, Cavalier, Direwolf Rider, Paladin, Deathblade, Thug, Bandit, alternate Goblin Rouser, Revenant, Naga Fighter, Troll.
  • New unit graphics and animations for the Troll Hero, Drake Glider, Sky Drake, Hurricane Drake, Drake Burner, Drake Fighter, Drake Warrior.

Language and i18n

  • Updated translations: Czech, Dutch, Estonian, French, German, Hungarian, Lithuanian, Polish, Slovak
  • Updated Drake Clasher, Arbiter and Slasher descriptions.

Multiplayer

  • Added a /q alias for /query
  • New lobby interface in gui2, testable work in progress available with --new-widgets. There are known issues with window resizing and low resolution support.
  • Server-side generation of random numbers for MP (combats)
  • No MP compatibility with earlier clients and wesnothd
  • --no-srng command line switch is available to turn off server RNG support (and rquirement) in a client. Only games played with clients pre-srng or with srng disabled as well can work without OOS. This is a testing feature that will likely be removed prior to 1.8.
  • Room support via /join and /room commands, better support in the experimental new lobby. See https://www.wesnoth.org/wiki/MultiplayerRooms for details.

Multiplayer server

  • Added server-side RNG support. Old clients can still play as normal.
  • Added room support to the server.

Unit balancing

  • Added Dwarvish Stalwart, Elder Wose, Shock Trooper and White Mage to random_leader of the default era.
  • Added Ancient Wose, Dwarvish Sentinel, Iron Mauler and Mage of Light to random_leader of the AoH era.

Unit renames

  • Drake Gladiator -> Drake Thrasher
  • Drake Slasher -> Drake Arbiter

WML Engine

  • return 0 for length of arrays inside nonexistent containers (bug #13734)
  • [end_turn] now waits for the event to finish before ending the turn
  • it is now possible to use Pango markup in storyscreen text
  • it is now possible to specify a custom title= in [story] [part]s
  • [story] [part]s' text placement may be changed with text_layout=; it currently supports "top", "middle" and "bottom" (default)
  • [story] [part]s accept the sound= attribute for a list of sound files from which a single one is chosen and played once
  • [story] [part]s accept a caption= attribute as a text header
  • new tags [store_unit_type] and [store_unit_type_ids] were added
  • allow direct WML unit modification of "halo" attribute

Miscellaneous and bugfixes

  • [music], [sound], [sound_source] and [label] should work again on WML prestart events; this means most music playlists should work again (bug #14039)
  • 'Recruit' and 'recall' don't appear in context menus unless the leader is on a keep. (bug #13856 and #13855)
  • No longer "crash" upon invalid pango markup
  • It's now possible to display the area a widget uses, for debug purposes
  • The widget in a stacked widget now grows properly
  • Merged code for FDO and KDE desktop notification; only dbus is needed
  • Added --screenshot parameter to take map screenshots without initializing a GUI.
  • Added --new-uploader parameter for testing the new experimental log uploader.
  • Fix gcc 4.4 compilation errors (Debian bug #539546)
  • Added a work-around a listbox assertion failure in the new MP lobby

Version 1.7.2

Campaigns

  • Son of the Black Eye
    • changed Orcish Shaman movetype from smallfoot to orcishfoot
  • Graphics:
    • New portrait for male and female Footpad, male and female Outlaw, Horseman, Drake Clasher, Goblin Wolf Rider, Goblin Pillager, Dwarf Explorer, Dwarf Scout, Cavalryman, Skeleton.
    • New unit graphics and animations for the Dwarvish Scout, Pathfinder, and Explorer; Drake Clasher, Slasher, Warden, Gladiator, Enforcer.

Language and i18n

  • Updated translations: Czech, Dutch, Estonian, Finnish, French, German, Italian, Lithuanian, Polish, Russian, Serbian, Slovak

Terrains

  • New terrain: drake village

User interface

  • Add an icon to show whether or not the user finished a campaign
  • Fixed bug #13831: Bug with team labels
  • Added a new experimental stacked widget widget
  • Added support for Growl notifications
  • Added support for desktop notifications using KDE's org.kde.VisualNotifications DBus service
  • Changed "Toggle Full Screen" button to say "Full Screen" (bug #13909)
  • Added cost of units recruited, recalled, killed, and lost, to the statistics window (patch #1190)
  • Fixed bug #13626: Bug about no option to turn on/off save delete confimation. (patch #1192)
  • Allow [advanced_preference]s to be of the 'int' type, appearing as a slider
  • Add better configurable linked widgets in the new gui
  • Allow to make items in a listbox invisible (needed for filtering)
  • Initial new loby user interface, available for testing with --new-widgets

Miscellaneous and bugfixes

  • Fixed language switch not affecting unit descriptions (bug #13827)
  • Fixed teleporting to impassable terrain (bug #13795)
  • Fixed an issue where teleporting could leave a unit halo
  • Fixed [set_variable]'s rand and random when operating on 0..0 (return 0)
  • Allow items to be removed from a listbox
  • Fixed objective dialog not recognizing markup (bug #13888)
  • Fix minimap no clipping in the new wiggets
  • Added preprocessor macros to the wiki grabber tool

Version 1.7.1

AI

  • Reworked AI code to allow easier creation of AI components.
  • New AI: Composite AI
  • (Optional) new AI configuration syntax.
  • Basic reimplementation of an old C++ AI as a 'candidate action'-based composite AI
  • Autodiscovery of available AI configurations from data/ai/ais.
  • (In debug mode) Autodiscovery of available AI configurations from data/ai/dev

Campaigns

  • Delfador's Memoirs: new portrait for Lionel.
  • The Hammer of Thursagan: new portraits for Angarthing, Ratheln.

Graphics

  • New portrait for Knight, Ghost.

Language and i18n

  • Updated translations: Chinese (Traditional), Czech, Finnish, French, German, Greek, Hungarian, Icelandic, Lithuanian, Polish, Russian, Serbian, Turkish

User interface

  • Removed the old obsolete layout algorithm in the new widgets
  • Added unit tests for the new widgets
  • Improved the layout algorithm not to show scrollbars when they make the situation worse
  • Add a new transient message dialog
  • Add a new multi page widget
  • Increase the lineheight in the new dialogs
  • Add a blur precommit function to the canvas
  • Improved the redraw algoritm and added more asserts
  • Objectives now use pango markup
  • Replace the campaign dialog with a new gui one (debian bug #497655)
  • Removed the hidden option to disable the tips of the day
  • A click on a slider now properly sets the position
  • WML generated messages, labels and sounds are skiped during replay (bug #13519)
  • Added support for desktop notifications (GTK/libnotify only for now, patch #1179)
  • Added a hotkey to toggle team ellipses (fr #7763)

WML Engine

  • Made new turn, turn X, side turn and turn refresh events synchronous. (bug #10603)
  • Petrified units no longer heal. (bug #13513)

Miscellaneous and bugfixes

  • Add strict compilation to cmake
  • Let cmake also use the CXXFLAGS and CFLAGS environment variables
  • Fixed a segmentation fault with storyscreens using [if] (bug #35959)
  • Properly translate dialog title (bug #13761)
  • Fixed a problem with easy close that caused buttons to be ignored
  • Properly translate unit name and mark strings translatable (bug #13751)
  • Properly redraw logo on the loading screen (bug #13758)
  • Set window title before setting video mode (bug #13756)
  • Fixed dates in the load box being untranslated (bug #13782)
  • Fixed networking code regression that could lead to "Client disconnected" errors when creating a MP game
  • Minimum version for Boost is now 1.35

Version 1.7.0

AI

  • Added command-line option ai_config=
  • Fixed incorrect handling of poisoning attacks when suggesting best attack in user interface
  • Added basic history and hot-redeployment capabilities to in-game console.
  • Changed AI Lifecycle handling. Console AI is now persistent between invocations.
  • Added AI Arena test map to test AIs in interactive mode ( ai_arena_small )
  • Changed interaction between default AI and Formula AI - made default AI fallback to formula recruitment if "recruitment" config option is set in AI config.

Campaigns

  • Delfador's Memoirs:
    • New campaign added to mainline from the Wesnoth-UMC-Dev repository. (Novice level, 24 scenarios)
  • Eastern Invasion:
    • Fixed the liches not being revealed properly in 'Weldyn Besieged'
  • Heir to the Throne:
    • Made snow fall gradually every turn in 'Northern Winter'.
    • Enforce a 7-hex starting castle to prevent units from appearing inside a wall in 'The Scepter of Fire' (bug #13377).
    • Made the number of enemies to defeat depend on the difficulty in 'Test of the Clan'.
  • Under the Burning Suns:
    • Kaleh advancement:
      • Gave the Hero variation more HP.
      • Reduced XP requirements for the Captain variation.
      • Disabled the sword2 (and thus armor) AMLA for the Captain variation.
      • Enabled the bolas AMLA for all variations.
      • Added the camouflage AMLA back.

Editor2

  • New feature: exporting of selection coordinates to system clipboard
  • Made auto terrain transition mode tri-state: on (editor2's on), partial (1.4 editor's on / editor2's off) and off (1.4's off).
  • Made "wesnoth -e FILE" work like "wesnoth -e --load FILE" (load the map)
  • Made "wesnoth -e --load DIR" (and consequently "wesnoth -e DIR") set DIR as the default map directory for the current session, and start with the map load dialog open
  • Added ability to load maps referenced in scenario files
  • Added ability to work with maps embedded in scenario files (saving works in a limited scope)
  • Moved the clipboard actions to a context menu available in paste mode
  • Added a terrain sampler feature -- ctrl+click when in paint or fill mode

FormulaAI

  • Fixed bug #13230: added debug_float FormulaAI function to allow debugging via floating popups on the specified hex
  • Added run_file FormulaAI function to allow running .fai scripts directly from in-game console
  • Fixed bug #13295: made enemy_units formula return only those units which are not incapacitated (for example, it now ignores petrified units )
  • Implemented FR #13348: added timeofday_modifier function to formula AI
  • Added attacks_left attribute to unit callable
  • New variable: my_attacks with all possible attacks
  • Added a new type of candidate move : strategic
  • Added suitable_keep FormulaAI function to allow easier selection of suitable keep for leader

Graphics

  • New type of animation : "recruiting" used by leaders when recruiting units
  • New portrait for Orc Grunt, Dwarf Fighter (alternative), Goblin Spearman, Ogre/Young Ogre, Trapper, Ranger, Huntsman
  • Image path functors:
    • New functor, ~NOP(), which does nothing.
    • The ~RC() image functor does not accept the special palette switch ~RC(palette1=palette2) syntax anymore. ~PAL(palette1>palette2) should be used instead

Language and i18n

  • New translations: Icelandic
  • Updated translations: British English, Catalan, Chinese (Simplified), Chinese (Traditional), Czech, Dutch, German, Finnish, French, Hebrew, Hungarian, Indonesian, Italian, Lithuanian, Norwegian, Polish, Russian, Serbian, Slovak, Swedish, Turkish
  • Updated CJK character range
  • Fixed word wrapping in CJK languages (patch #1140 from sylecn)
  • Remove female^ descriptions of Outlaw, Footpad, Fugitive, Dark Adept
  • The term 'stoned' has been replaced with 'petrified'; also the related verb.

Multiplayer server

  • Implemented automatic saving of game replays.
  • Implemented the adminmsg command to allow players to send messages to currently available admins. (FR #9218)
  • Fixed bug #7547: Add possibility to unban/unmute in a multiplayer game

Savegames

  • Providing a new simpler interface for dealing with savegames

Terrains

  • New terrains: orcish fort, orcish village

User interface

  • Fixed bug #13257: Attack dialog always uses the active name of a weapon special
  • Fix missing faction column when waiting that the host start the game, plus some other unwanted changes there (bug #13243)
  • Make delayed shroud updates and scenarion objectives to change and show information for viewing team. (help in bug #13313)
  • Making the game return to the add-on install dialog just before installing one, and with its entry selected
  • Implemented FR #13321: added "unit advances=N" command to debug console to immediately level-up selected unit N times
  • Improved the sorting of the XP and traits columns in the unit list dialog (part of bug #13360)
  • New console command ":discover" make the help considers that you discovered all the units of the current campaign/era
  • Debug action "Change unit side" allows to change owner of empty village and is now renamed "Change side".
  • Debug actions "Create unit" and "Change side" used on unit in a village now causes a capture of that village.
  • Rewrote the layout algoritm (still a work in progress)
  • Fixed an multi-character UTF-8 handling bug in the password textbox
  • Changed the tmessage dialog to be able to show four buttons and added an extra helper function to show the dialog.
  • Add a "Factions" section in help. Only show current era's informations.

WML Engine

  • Added [show_objectives] tag and allowed [show_if] tag in [objective] tags. (bug #13042)
  • Made moveto events set $x2,$y2 to the source hex. (bug #13140)
  • Story screen and parts allow using [switch], [if], [wml_message] and [deprecated_message] consistently at [part] and [story] levels. (feature/bugs #13170, #13290)
  • Added a "preload" WML event type.
  • Added ability to change the share_view team attribute using [modify_side] tag. Be sure to use fog=yes for that side (bug #13320)
  • Added support for Lua scripts in WML event actions ([lua] tag)
  • [modify_side] can now change the share_view attribute
  • new tag [hide_help] in [units] allows to hide units in help when you can't change these unit types (main use: hide mainline units).
  • [stone] and [unstone] have been replaced with [petrify] and [unpetrify]; the units' "stoned" status variable has been renamed to "petrified"
  • Added the 'sub' key to [set_variable] to subtract from the variable.
  • [era] and [multiplayer_side] now allow a 'description' key, and show it in help pages (but currently empty)
  • Filter on attacks now uses a 'damage' key, also support range like 1-9.
  • Attacks with damage=0 are now correctly supported.

Miscellaneous and bugfixes

  • Added --ignore-fatal-errors option to wmlunits
  • Added --rng-seed command line option to specify a value to seed the random number generator with
  • Changes to logging:
    • New logdomain : uploader to see stat-upload related actions
    • The --log-domain command-line option now allows for a bit of pattern-matching, e.g., "--log-info=ai/*"
  • Fixed compilation with -D_GLIBCXX_PARALLEL
  • Fixed handling of floating-point WML constants on localized Windows (impacts "submerge" animations and AI settings)
  • Fixed control transfer after player leaves MP game (bug #13238)
  • Fixed a bug with auto-stored WML variables not being restored correctly
  • Fixed missing unit graphics when loading a start-of-scenario savegame.
  • Improved random village naming
  • The add-ons directory, /data/campaigns, has been renamed and it is now /data/add-ons
  • Enabled hinting for texts displayed by Pango/Cairo (bug #13399)
  • Enabled non-default fonts for Pango/Cairo (bug #13399)
  • Made dismissing of recallable units undoable
  • Sped up pathfinding (and therefore AI)
  • fps info used in debug mode show info about number of redrawn hexes.

Version 1.6a

User interface

  • Remove a no longer valid assert (bug #13217)
  • Make sure the dialog always uses the full map area width

Multiplayer and AI

  • Fixed bug #13222: Do not use the FormulaAI by default since it could lead to the AI doing nothing
  • Fixed bug #13218: infinite loop in the AI if it persistently tries to move unit to occupied square
  • Moved FormulaAI related debug output into the info log level

Version 1.6

Campaigns

  • Under the Burning Suns:
    • All portraits now have a transparent background (bug #13135)

Graphics

  • New or updated unit graphics for the Mermaid Priestess and Enchantress unit lines

Language and i18n

  • updated translations: Finnish, French, German, Lithuanian, Polish, Portuguese (Brazil), Russian, Slovak, Spanish

User interface

  • Grey game titles out when we're missing the era
  • Fix a dialog size problem returning invalid sizes (bug #13203)

WML Engine

  • Increase the map size limit to 1000 by 1000
  • Added an 'always_display' key to [advancement] to make it possible to show the advance dialog even with just one option.
  • weapon filters now recognize the id= attribute of specials (bug #13193)

Miscellaneous and bug fixes

  • Fixed bug #13204: NR: Death event doesn't re-spawn Malifor as expected
  • Fixed bug #13198: Corrupt replay in MP
  • Fixed bug #13199: Map generation in mp fails when hills and size of hills sliders are at max
  • Fixed bug #13179: Unit's move have sometimes a jumpy start
  • Stop resetting the alternate default zoom level after each reload

Version 1.5.14

Campaigns

  • Descent into Darkness:
    • Increased the experience requirement for the Ancient Lich from 150 to 250
  • The South Guard:
    • Made Deoran not dismount in 'Into the Depths' anymore
  • Under the Burning Suns:
    • Simplified Kaleh's AMLAs to have consistent requirements and effects.

Graphics

  • New portrait for the male and female Assassin, Gryphon Rider, Longbowman, Master Bowman, Dwarf Runemaster.
  • New variations of desert plants

Language and i18n

  • updated translations: Catalan, Chinese (Simplified), Czech, Dutch, Finnish, German, Hebrew, Hungarian, Lithuanian, Norwegian, Polish, Russian, Slovak
  • updated DejaVuSans to 2.29
  • replaced sazanami-gothic.ttf and wqy-zenhei-gb2312.ttf with wqy-zenhei.ttc (version 0.8.38-1)

Music and sound effects

  • Added the new music track "Siege of Laurelmor" by Doug Kaufman

User interface

  • Fix an assertion failure when an unexpected mouse button was used (bug #13126)
  • Fixed bug #13161: Inactive weapon special name and description not used
  • Fixed bug #13123: When you're downloading add-ons they do not appear in the campaigns list until BfW is restarted
  • The size of the message dialogs now really depends on the size of the map
  • Started with a new layout engine for the new widgets (bug #13180)
  • Fix few bugs about selecting an unit during another unit's move
  • Fix a regression: again allow to use right-click to cancel drag&drop

WML Engine

  • Increase the map size limit to 1000 by 1000

Miscellaneous and bug fixes

  • Fix another campaign replay bug (#13139)
  • Fix AI bug #13165 (leader too aggressive)
  • Fix WML [advancefrom] bug (#13176)
  • It is now possible to create units with random genders in debug mode
  • Reduce the fontconfig dependency to 2.4.1

Version 1.5.13

Graphics

  • New portrait for the Woodsman, Bowman, male Thief

Language and i18n

  • updated translations: Chinese (Simplified), Czech, French, Finnish, Hungarian, Polish, Russian, Slovak, Turkish

Multiplayer

  • The engine now send the exact path used by units, preventing visual differences between clients.

User interface

  • Fixed a crash when trying to use scrollbars in an invisible widget
  • Fixed the setting of the ellipse_mode in ttext
  • Improve the showing of ellipses in the textbox (bug #13083)
  • Fix bad anti-aliasing of in-game MP chat (bug #12938)

Miscellaneous and bug fixes

  • Fix another savegame cache corruption
  • Fixed bug #13099: MP lobby player list becomes inaccurate over time
  • Fix bug #13118: OOS/replay bug when moving near ambushed units
  • Better fog update after "slow" and "stone" attacks
  • Updated Doxyfile to 1.5.6 format
  • Fix regression about missing sighted event triggered by AI in replay
  • Renamed some [ai] attributes to use correct English spelling. Support for their misspelled forms will be removed in 1.7.0.
    • simple_targetting -> simple_targeting
    • scout_village_targetting -> scout_village_targeting

Version 1.5.12

Add-on server

  • Ignore case on add-on (file)names (bug #13080)
  • Disallow uploading of add-ons with no title, type, author, version or description specified and warn about invalid versions

Graphics

  • New portrait for the female Thief
  • New tiles for summer and fall deciduous and mixed forests
  • Deciduous and mixed forests now used in several campaigns (not all, yet)
  • New tiles for dirt
  • Fixed a lot of small terrain transition glitches

Language and i18n

  • updated translations: Chinese (Simplified), Czech, French, German, Italian, Polish, Portuguese (Brazil), Spanish, Turkish

Multiplayer

  • Updated maps: Howling Ghost Badlands, Sullas Ruins, Isar's Cross

Music and sound effects

  • Fix a regression which caused the endlevel music to be played even when skipping linger mode (e.g. result=continue or continue_no_save).

Miscellaneous and bug fixes

  • Removed last binaryWML references by making the save_index gzip compressed. (We can still receive binaryWML via the network.)

User interface

  • Listbox columns have the same width again
  • Fix false "click" sometimes triggered at end of unit move (bug #12712)
  • Now clear fog/shroud before an attack when doing a move+attack action
  • Fix broken auto-undo when trying several move+attack with the same unit
  • Changed the widgets in the in game message dialog
  • The multiplayer dialog shows tooltips again
  • The textbox history now uses CTRL+TAB and CTRL+SHIFT+TAB
  • Properly set the cursor when opening a dialog (bug #12961)
  • Fixed bug #13029: Problem with mouse-over unit identification in replays
  • Added experimental campaign selection dialog (Only available when starting with --new-widgets.)
  • Properly reset the scrollbar mode when resizing (bug #13018)
  • Fix unwanted double-clicks (caused by 1-pixel drag&drop)

WML Engine

  • Fix incorrect or doubled "sighted" events when delaying shroud update
  • Fix sometimes missing or doubled "select" events.
  • Fixed bug #13090: Make movement_costs < 1 behave like movement_costs = 1

Miscellaneous and bug fixes

  • Align all network buffers on 4 bytes
  • Partial fix for bug #13092: avoid a case of invalid iterator usage in FormulaAI
  • Fix savegame cache corruption (bug #12815/Debian bug #483782)

Version 1.5.11

Campaigns

  • Descent into Darkness:
    • Removed the custom python AI used in 'A Haunting in Winter'

Campaign server

  • Reject add-ons with an empty type.
  • Give warning note when the add-on version is invalid.

Editor2

  • Fixed / worked around several filebrowser issues (save/load dialogs) (bugs #13033, #12771, #12625)
  • Fixed terrain palette issue when the palette was not full (bug #13012)

Graphics

  • New or updated unit graphics: Merman Fighter line, Merman Hunter line
  • New idle animations: Heavy Infantryman
  • New portrait for the Javelineer, Gryphon, Elvish Sylph.
  • Moved and renamed story screen files:
    • titlescreen/landscapebattlefield.jpg -> story/landscape-battlefield.jpg
    • titlescreen/landscapebridge.jpg -> story/landscape-bridge.jpg
    • titlescreen/landscapecastle.jpg -> story/landscape-castle.jpg

Language and i18n

  • updated translations: Czech, French, German, Hebrew, Lithuanian, Polish, Russian, Spanish
  • Fixed a problem that could lead to wrong cache being used, leading to some strings not being shown as translated (bug #12568)

Multiplayer

  • server:
    • Create the fifo group accessible (instead of only user accessible).

Music and sound effects

  • Added a campfire sound file for use with [sound_source] in sounds/ambient/.
  • The game will no longer restart the music on a scenario change or game load if the currently played track is on the new scenario's playlist

User interface

  • Fixed the assertion failure which could happen when clicking on a button. (bug #12927)
  • Allow chat command quoting as '/ /command'.
  • Fixed a bug which made listboxes the wrong size and caused visual glitches. (bug #12940)
  • Fixed colors in [message]. (bug #13019)
  • Made the maximum used width for the message text 650 pixels.
  • Added UI sounds to the new widgets. (bug #12748)
  • Fixed a glitch in the text drawing after showing markedup text. (bug #13023)
  • Fixed bug #13034: "/me" messages cut of first character in multiplayer game chat.
  • Fixed a glitch where the Gryphon wing was drawn over the fog and reachmap
  • When moving up or down in a listbox with a horizontal scrollbar, the listbox no longer changes the position of the horizontal scrollbar
  • Added experimental new addon download dialog (Only available when starting with --new-widgets.)
  • Fix a broken reference to the Myrmidon portrait.
  • Removed team_name checks for chat display.

WML Engine

  • Fixed bug #13024: Conditional [allow_undo] not always working right
  • Map size is now hard-limited to 200 by 200
  • attribute hidden in [side] allows to hide a side from status table, it also can be changed by [modify_side] (FR #12814)
  • Removed support for PythonAI to handle CVE-2009-0367

Version 1.5.10

Campaigns

  • The South Guard:
    • Made 'Into the Depths' a bit easier
  • Under the Burning Suns:
    • fixed a major 1.5.7 regression with Kaleh's AMLAs, that made them useless after advancing him to L2 (rel. bug #12911)
    • fixed dehydration in scenario 2 triggering double-advancement for dehydrated units when leveling up (rel. bug #12911)
    • fixed some bad logic around the "Dust Devil dance" scene in scen. 2.
    • made all human-controlled major characters unrenamable.

Graphics

  • New or updated unit graphics: Elvish Enchantress, Orcish Slayer, Naga Fighter, Naga Myrmidon
  • New idle animations: Dwarvish Thunderer, Naga Fighter
  • New portrait for the Halberdier, dwarf Ulfserker line
  • Unit HP bar decrease progressively when unit gets hit
  • Rewrote the rendering engine which should fix the drawing order

Language and i18n

  • new translations: Marathi
  • updated translations: British English, Dutch, French, German, Hungarian, Italian, Russian, Slovenian, Spanish, Swedish

Multiplayer

  • Added support for observers to pause and continue the game at any time
  • Fixed bug #12896: Map generator does not sync between clients when advancing in MP campaigns
  • Updated maps: Clash, Cynsaun Battlefield, Den of Onis, Silverhead Crossing, Howling Ghost Badlands, The Wilderlands, Forest of Fear
  • Removed Necrophage from the Undead Random Leader List.

Terrains

  • Enabled mixed deciduous-pine forest terrains
  • Forested hills variations now available for the deciduous forests
  • New merman village terrain variations

User interface

  • Fixed an exception when certain characters weren't escaped
  • Removed the gamma correction option (code is only disabled not removed)
  • Fixed the assertion failure with long options (bug #12970)

WML Engine

  • [replace_map] changes the map completely, changing the map size is posible - off-map units go into the recall list

Miscellaneous and bug fixes

  • Fix bug #12946: [menu_item]/[command] losing function when called again
  • Fix flickering of units in the second part of the tutorial (bug #12923)
  • Fix high CPU usage in multiplayer lobby due to inefficient handling of friends and ignores lists.
  • AmigaOS4: Minimum stack cookie to prevent stack overflow (patch #1107)
  • Additional screenmodes when SDL can't guess them (patch #1108)
  • Python AI works again. (bug #12955, bug #12913)
  • Fixed the :query command to work while in a multiplayer game, not only when in chat (as /query)
  • Fixed invalid memory access with AMLAs (bug #12911)
  • Closing a message with escape caused the message to skip on the next execution of that event (unless it required input)

Version 1.5.9

Campaigns

  • Descent into Darkness
    • In 'Endless Night', the enemy's gold now increases faster
  • The South Guard
    • Made 'Tides of War' a bit easier
  • Sceptre of Fire
    • Fix the player's keep disappearing in 'Gathering Materials'
    • New graphics for the Dwarvish Miner
  • Under the Burning Suns:
    • New base frames for the Desert Sentinel and Prowler

Graphics

  • Removed the black background from some remaining old portraits
  • New portrait for Dwarf Thunderer, Dwarf Dragonguard, Human Pikeman, Dwarf Fighter, Dwarf Lord, Dwarf Guard, Mermaid Initiate, Dwarf Sentinel
  • Image-path functions:
    • All image path functions except RC() and TC() can now be stacked correctly and the order of precedence is from left to right. This may impact performance slightly.
    • New function, SCALE(W,H): scale down an image to the specified width (W) and height (H) for rendering. Negative or null (zero) numbers are ignored when scaling in the respective direction
  • Restructured portraits directory to be based on unit types rather than authors, added an authors file for recording portrait credits

Language and i18n

  • updated translations: Catalan, Chinese (Traditional), Czech, Dutch, French, German, Hungarian, Italian, Polish, Slovak, Spanish, Valencian

Multiplayer

  • Made "fog of war" and "random start time" default to on.
  • Fixed the Default Era quick leaders not getting the -5% HP reduction
  • Made leaders with 4 MP receive the quick trait also in Age of Heroes

Terrains

  • New summer, fall and winter deciduous forest terrains

User interface

  • Hide the "Network Player" option for Local MP Games (bug #12596)
  • Portraits with an icon are TC'ed again
  • All [message] based dialogs are now converted to the new dialogs

WML Engine

  • Prevent duplicate id conflicts when cloning units with WML (bug #12894)
  • [time_area], in EventWML, can now accept comma-separated lists of area ids for removing, but not for inserting; in the latter case, only the first id is considered to avoid stacking time_areas over a single location by accident
  • [fire_event] children tags [primary_unit] and [secondary_unit] now take a real Standard Unit Filter instead of a x,y coordinate pair When a filter matching multiple units is used, only the first matching unit will be taken for firing the event. Recall list filters and invalid locations are silently ignored
  • [set_variable] can now handle both integer and floating point values properly. The functions round, ipart and fpart were added (bug #12546)

Miscellaneous and bug fixes

  • Fix clients not agreeing on remaining movepoints (bug #12467)
  • Fix summoning of other players recruit list on turn 1 (bug #12783)
  • Fix [item] overlays with visible_in_fog=yes magically becoming visible_in_fog=no (the former default for a missing attribute) when loading saved games - because the game was looking for a fogged= attribute instead on loading
  • Made [item] overlays always default to visible_in_fog=yes if not specified
  • Made [label] overlays always default to visible_in_fog=yes if not specified

Version 1.5.8

Campaigns

  • An Orcish Incursion
    • Converted to the new gold carryover system
  • Eastern Invasion
    • Fixed victory not triggering correctly in 'The Crossing'
    • Fixed missing time of day schedules in several scenarios
    • Fixed various problems in 'Northern Outpost'
  • The Hammer of Thursagan
    • Converted to the new gold carryover system.
  • The Rise of Wesnoth
    • Renamed "Lord Dionli" to "Lady Dionli".
  • Son of the Black Eye
    • Made scenarios 'Silent Forest' and 'Shan Taum the Smug' harder.
  • Legend of Wesmere
    • Fixed the bug with savegames in scenario 3

Graphics

  • New portraits for Royal Guard, Heavy Infantry, Iron Mauler, Sergeant, Lieutenant, General, Grand Marshal with 1 alternate, Saurian Augur line, Saurian Skirmisher line, Troll Whelp, Death Knight
  • Fixed drawing glitches in the listboxes
  • Fixed several glitches with the new portrait dialog
  • Optimized animation and invalidation of idle/standing units
  • Removed the black background from most of the old portraits

Language and i18n

  • Fixed a small bug that was causing the translations engine to look at badly mixed up paths when trying to locate UMC translations, rendering them unusable (bug #12872)
  • Fixed translation of 'A New Land' not being shown
  • updated translations: Chinese (Simplified), Czech, Danish, German, Hungarian, Italian, Japanese, Lithuanian, Russian, Slovak, Spanish
  • updated DejaVuSans to 2.28

Multiplayer ui

  • Added a gui front-end to various commands, brought up by double clicking a player name, replacing the old whisper dialog
  • Automatically select the game the selected player is in
  • Try to preserve the selected player when the player list is updated
  • Added an option to avoid auto-scroll to enemy units during opponent's turn
  • Cleared the login dialog mess: Now there is a single dialog to display error messages from the server and to choose a different username and/or password
  • Added the possibility to provide a password in the main multiplayer dialog
  • Added an option to save the password to the preferences

Networking

  • Ensure SDL_net is initialized before attempting to send upload_log

Unit changes and balancing

  • Updated most units' defense and movement values on coastal reef

User interface

  • Pressing backspace in a textbox with selection now clears the selection.
  • Scrollwheel mouses can scroll the new listboxes
  • New advanced preference to choose whether middle-click scrolls or warps
  • Fixed a glitch which closed a new dialog on the mouse up event of the old dialog (the effect is percieved as the new dialog not showing up)
  • Spacebar closes the dialogs without a scrollbar again
  • Pressing escape in a new dialog, behaves like in the old dialogs again
  • The new portrait dialogs can get higher so the scrollbars are less often visible
  • Added a password box that hides its input
  • The new portrait dialogs can now show the old images as well and also the right hand side images

WML engine

  • add an "animate" key to the [teleport] event
  • add a resistance_anim block used whenever a unit uses a [resistance] ability on a neghbour
  • deprecated tag [debug_message]; use [wml_message] instead, which now offers the debug/dbg logger and uses the "wml" log domain (i.e. --log-=wml should be used instead of --log-=notifs)
  • The text output created by [wml_message] to stderr is echoed in-game using the chat user interface like [deprecated_message] and other Invalid-WML messages; the level of verbosity is controlled by the log level for the "wml" log domain
  • the animate_unit action can now animate multiple units
  • the animate_unit action can now change the direction the unit is facing with a SLF
  • add a [replace_map] map="file" event that can load a map of a different size in a scenario
  • make [remove_shroud] and [place_shroud] use true Standard Location Filters, not just location lists/ranges (bug #12869).

Miscellaneous and bug fixes

  • Added the sunset feature to the new dialogs.
  • Fix the calculate feature in the test scenario.
  • Fix an endian issue which rendered text wrong on big endian machines
  • Fix a bug with temporary objects not being removed at next scenario
  • Fix replays with empty starting positions.
  • Prevent access to invalidated memory after the first download when updating all installed add-ons (bug #12837)
  • Adjusts drain game mechanics to match attack prediction (bug #7702)

Version 1.5.7

Campaigns

  • Descent into Darkness
    • Removed debris from this campaign's copy of the map of the Great Continent, and converted Parthyn's marker (which was black) to a brownish marker.
  • Eastern Invasion
    • Converted to the new gold carryover system.
    • Gave the undead flag to relevant sides.
    • Fixed Dacyn and Owaec not being loyal.
    • In 'Mal-Ravanal's Capital', reworked how the prisoner knights work: now they're placed on the map in cages with guards next to them, and the player must kill the guard to release the prisoner.
    • Removed debris from this campaign's map of the Great Continent, and converted all black markers to brownish markers.
  • Heir to the Throne
    • Added an idle animation for L2 Princess.
    • Fixed the dwarves attacking the player in 'The Lost General'.
    • In 'Bay of Pearls', the player receives recruitment of all lvl1 mermen units if both enemy leaders are defeated, and only Mermen Fighters if only one of them is.
    • Fixed not being able to recruit mermen in 'Isle of the Damned'.
  • Liberty
    • Converted to the new gold carryover system.
    • Gave the undead flag to relevant sides.
  • The Rise of Wesnoth
    • Changed Familiar's portrait to match his new unit type.
    • Fixed a good amount of funny inconsistencies with Familiar's unit type.
    • Fixed broken death events.
    • Lady Outlaw does not lose her experience on 'Return to Oldwood'.
    • Restored missing leading animations for Noble Commander and Noble Lord, and gave leading animations to Wesfolk Outcast line.
  • Sceptre of Fire
    • In 'Searching for the Runecrafter', the turn limit is now increased when finding Thursagan.
    • In 'Gathering Materials', all enemy sides now fight each other.
  • Son of the Black Eye
    • Cleaned up the forests in the Far North map; removed a lot of debris from said map.
  • The South Guard
    • Made 'Into the Depths' a bit easier on the easiest difficulties.
  • Two Brothers
    • Converted to the new gold carryover system.
  • Under the Burning Suns
    • Converted to the new gold carryover system.
    • Made Elyssa loyal+quick instead of quick+intelligent.
    • Gave the Shyde/Star appropriate healing frames.
    • Added updated Desert Hunter sprites.
  • Legend of Wesmere
    • Recoded Olurf in scenario 02
    • Marked the guards in scenario 05 to be killed.
    • Many Bug fixes(recruiting, village ownership)
    • Made Olurf's side persistent.
    • New 400*400 pixel sized portrait images.
    • All portraits are now displayed without scaleing.
    • Updated music playlists.
    • Flipped the Ka'lian map horizontaly.
    • Updated overview map to LoW's time.
    • Redone journey that is displayed on the overview map.

Editor2

  • The map editor is automatically started if the binary file used to start Wesnoth contains "editor" somewhere in its name (useful for symlinks).

Graphics

  • Gave a nicer ranged attack animation to Troll Rocklobbers.
  • New attack icons: spiked mace.
  • New or updated unit graphics: Gryphon Rider, Gryphon Master, Revenant, Naga Warrior.
  • New portraits for Peasant, Swordsman, Spearman.
  • New image-path functions:
    • ~CS(R,G,B): do a simple color-shift by adding the argument values to each color channel.
    • ~R(v), ~G(v), ~B(v): mangled forms of ~CS() for single channel manipulations.
    • ~O(percentage%), ~O(factor): change an image's opacity by a percentage value (0%-100%-%) or a numeric factor (0.0-1.0-), respectively. Using factors/values greater than 1.0/100% causes pixels with non-zero alpha value to have it increased.
    • ~BL(radius): blur an image by the given radius.
  • Added the transparent version of Kitty's portraits.
  • Rewrote the drawing engine for the new widgets.
  • Enabled the new dialogs when a new portrait is available.
  • Properly update animated halos (bug #11965).

Language and i18n

  • Renamed the --dummylocales parameter to --dummy-locales.
  • Fixed the po extraction tool to also include the id field.
  • updated translations: Chinese (Simplified), Czech, Danish, Dutch, Finnish, French, Galician, German, Hungarian, Italian, Lithuanian, Polish, Slovak, Spanish, Turkish

Terrain

  • New graphic variations for Oasis (Dd^Do) terrain.
  • Added a new invisible impassable overlay terrain, which can be painted on top of any (non-layered) terrain to make the hex impassable.

Unit changes and balancing

  • Decreased the range attack of the Drake Flare from 7-4 to 6-4.
  • Decreased the range attack of the Drake Flamehart from 9-4 to 8-4.
  • Increased the cost of the Goblin Spearman from 8 to 9.
  • Decreased the cost of the Sergeant from 20 to 19.
  • Decreased the HP of the Sergeant from 36 to 32.
  • Decreased the HP of the Lieutenant from 48 to 40.
  • Decreased the melee attack of the Lieutenant from 9-3 to 8-3.
  • Decreased the HP of the General from 58 to 50.
  • Decreased the HP of the Grand Marshal from 68 to 60.

User interface

  • Recruit, recall, unit-list and create-unit dialogs display the selected unit/unit-type's race.
  • Improved appearance of progress bars besides the loading-screen one.
  • Rewrote the layout algorithm for the new widgets.
  • Fixed the font loading when the data directory is overridden.
  • Removed text wrapping around background image in story screens; it is better to always use the whole screen width if possible (fixes the first story screens in Descent into Darkness and Under the Burning Suns).
  • Tweaked the algorithm that extends the darkened area below long story texts so that it gives a more consistent appearance.
  • Added a border and blurring to story screens' text blocks.
  • Improved wrapping in the new widgets.
  • Improved easy close handling.
  • Added a horizontal scrollbar widget.
  • Made the border scrolling threshold a (hidden) preference and made it default to 10 instead of 5 pixels.
  • Don't display movement costs for units that have "infinite" costs on terrains. The recognition margin is 5 MP.

WML engine

  • Allow inline formulas "$( ... )" to be used in general WML
  • Ignore whitespace at the beginning or end of event names
  • Added the 'round' key to [set_variable].
  • New attribute to_variable= in [unit] to spawn directly into a variable
  • New attributes x,y= in [unstore_unit] to override unit location
  • It is possible to override the end-of-campaign screen text and its duration using end_text and end_text_duration attributes respectively, in [endlevel] or [campaign] tags. end_text_duration is measured in milliseconds. (feature #10449)
  • [modify_turns] now works in scenarios without a turn limit. (bug #12715)
  • Direct modifications to a unit using [unstore_unit] will now be kept when advancing to the next scenario.
  • If there is a file called _initial.cfg in an included directory, and no _main.cfg, _initial.cfg is guaranteed to be processed before other files in the directory.
  • [endlevel] has been expanded by the carryover_report=, save= and linger_mode= attribute.

Miscellaneous and bug fixes

  • Compressed start-of-scenario saves are properly recognized by the load-game dialog again.
  • Fixed replays for single-player campaigns (bug #12005).
  • Fixed the restart-replay button causing an assertion failure.
  • New memory allocator introduced to the engine. It should produce 5-10% savings in memory usage on 64-bit systems. The allocator is disabled by default.
  • Included extra headers for certain g++ versions (patch #1113).
  • Fixed random memory corruption/assertion failure/massive leak due to story screens.
  • Fixed [role] not working when no type was specified (bug #12660).
  • Fixed compilation with Python 2.6 (bug #12638 (included a patch)).
  • Fixed spammy multiplication of advancement options for units affected by the [unit_type][advancefrom] clause (observed in add-on Invasion_from_the_Unknown from the wesnoth-umc-dev trunk) each time advancements were evaluated.
  • Improved the drawing routine for the ttext class.
  • Pressing Escape to exit the game from the title screen now requires a discrete keypress (bug #12747)
  • Properly implement the CFLAGS for autotools.

Version 1.5.6

Authoring tools

  • trackplacer is a pygtk tool that makes it possible to visually edit the journey tracks on Wesnoth campaign maps.

Campaigns

  • Descent into Darkness
    • Added a set of story art.
    • Made Malin's side use the ostensibly obscure undead flags after his banishment
  • Eastern Invasion
    • In 'Weldyn Besieged', the positions of the liches are now randomized and their names hidden until you attack them (patch #1109).
  • Legend of Wesmere
    • Newly added to mainline: Intermediate level, 24 scenarios. (Imported from wesnoth-umc-dev.)
  • Son of the Black Eye
    • In 'Clash of Armies', fixed all the merman spawns not working correctly and limited the number of simultaneous enemy gryphon recruits on the easiest difficulty.
  • The South Guard
    • Rewrote 'The Long March'.
    • Made each turn past turn 6 that passes in 'Pebbles in the Flood' give you some concrete benefit in 'Tides of War'. Also, the Council of Westin now always appears, but the exact turn depends on the length of Gerrick's defense.
  • Under the Burning Suns
    • Made use of the undead flag for undead sides
    • All known bugs (e.g. in Keratur's appearances and related to Kaleh's AMLAs) have been fixed.
    • Garak now gets into a duel of champions in "A Stirring In The Night".
    • The Quenoth elf graphics have been refreshed; most of their sprites now match the size of other 2.0 sprites and have been team-colored.
    • Fixed the problem with Nym's defense animation
  • Only the new gold carryover system is now available in Descent Into Darkness, Heir to the Throne, Scepter of Fire, Son of the Black Eye and The South Guard.

Editor2

  • Changed the base-terrain key modifier to shift from alt. This fixes an issue with some window managers grabbing the event.
  • Added basic mask applying feature
  • Added basic mask creation ("diff") feature
  • New multiple document interface, allows more than one map to be open at the same time. Experimental, can be turned off in the editor settings dialog.

Graphics

  • New or updated unit frames: Troll Shaman, Naga Fighter.
  • New animations: Deathblade idle, Orcish Assassin idle, Mage magic missile, Silver Mage magic missile and teleport.
  • Fixed some parts of alternative flag sets which were not correctly team colored.

Help menu

  • ability upgrades for max-level advancements are now listed (bug #10337)

Language and i18n

  • Fixed a problem on OSX where the locales detection didn't work; all languages are now enabled for OSX.
  • updated translations: Catalan, Czech, Danish, Dutch, Finnish, Galician, German, Hungarian, Italian, Lithuanian, Racv, Slovak, Spanish, Turkish
  • new translations: Valencian (the previous non-standard translation has been renamed to RACV).
  • Fixed Wesnoth looking for editor translations in the wrong place (bug #12426)
  • updated DejaVuSans to 2.27

Multiplayer

  • New multiplayer map: 4p Underworld.
  • Revised maps: Caves of the Basilisk, Hornshark Island, Silverhead Crossing, Sullas Ruins, Weldyn Channel, Alirok Marsh, Island of the Horatii, Castle Hopping Isle, King of the Hill, The Wilderlands.

Music and sound effects

  • Changed sound sources' default fade and full volume ranges to 3 and 14 hexes respectively; the former defaults were less than adequate.
  • Renamed music files:
    • nr-sad.ogg -> sad.ogg
    • main_menu.ogg -> transience.ogg
    • main_menu_new.ogg -> main_menu.ogg

Unit changes and balancing

  • New units: Dread Bat, Royal Warrior (character)
  • Gave the Goblin Pillager the same bite attack as the Wolf Rider.
  • Updated movement and defense values on the reef terrain for many units.
  • Added the 'fearless' trait to the Heavy Infantryman line.

User interface

  • Story parts that have show_title=yes and text at the same time have now the text's background drawn.
  • The new widget library now also supports closing a dialog with a mouse click without a close button.
  • The new widget library now has rudimentary support for wrapping long texts.
  • Added experimental support to show the new style dialogs when units talk in game. (Only available when starting with --new-widgets.)
  • Increased/fixed responsiveness of color cursors on "The End" screen when color cursors are enabled.

WML engine

  • Added "border" parameter to [terrain_mask] that overlays on the border in addition to the playable map area. The used mask must have the same border_size as the map (i.e. currently 1), else this will be ignored.
  • Restore x1, y1, x2, and y2 after events fired from events.
  • WML variable expansion can be used inside story [part] tags (feature request #10398).
  • When fire_event=yes, [kill] now also fires the 'last breath' event.
  • SingleUnitFilters can now check for empty keys such as role=$null

Miscellaneous and bug fixes

  • Fixed addon update version logic (patch #1110).
  • Fixed a flaw which caused sound sources to be forgotten after saving and loading a game (bug #11495).
  • Fixed crashes on move_unit_fake with unit types which cannot move over terrains that are part of the path.
  • Generic units get unique non-underlying ids again (bug #12558).
  • Fixed a bug where "name=" attribute was not recognized in SUF

Version 1.5.5

Campaigns

  • A new experimental gold carryover system is now supported in Heir to the Throne, Sceptre of Fire and Descent into Darkness: the choice appears in the difficulty level menu when starting the campaign.
  • Son of the Black Eye:
    • New portraits for Al'Brock, Flar'Tar and Howgarth.
  • Two Brothers:
    • Rewrite to include story screens by Stefan
    • Improved scenario texts and dialogs

Editor2

  • Added editor-specific settings dialog
  • Lighting setting similar to that of old editor, with presets from a (hardcoded) list of time_of_days. Can change the settings and see the effects without having to close the settings dialog. The preferences are shared with the old editor (FR #11408 / Debian bug #458305).
  • Auto update transitions option is stored in the preferences
  • Removed map flipping
  • Added clipboard flipping
  • Command line: added "--load FILE" support to "-e" (FR #12299)

Graphics

  • New or updated unit frames: Walking Corpse swimmer, Soulless swimmer

Music and sound effects

  • New music track "Heroes Rite" by Doug Kaufman.
  • New music track "The Deep Path" by Gianmarco Leone.

Language and i18n

  • Fixed a problem under Windows where the locales detection didn't work; all languages are now enabled for Windows.
  • Made it possible to translate ability names according to the unit's gender (feature #11982). Not yet activated for unit type.
  • updated translations: Czech, Finnish, French, Galician, German, Hungarian, Lithuanian, Polish, Slovak, Turkish, Valencian

Map editor and terrains

  • Removed wesnoth-editor. Use editor2.
  • Added a new "Snow Mountains" terrain (graphics still incomplete).

Multiplayer

  • Revised maps: Fallenstar Lake, 2p Hamlets, Hornshark Island, The Freelands, Castle Hopping Isle.
  • In default era, all leaders with 4 MP now receive the quick trait.

Units

  • Balancing changes:
    • Made units with the healthy trait take a quarter less damage from poison instead of half.
    • Increased the 'smallfly' movement cost over fungus from 1 to 2.
    • Changed the race of the Wolf Rider line from goblin to wolf.
    • Added the traits weak, slow and dim and made the goblin race use them.
    • Made the goblin race get 1 random trait instead of 2.
    • Increased the movement of the Goblin Spearman line from 4 to 5.
    • Increased the melee attack of the Goblin Spearman from 4-3 to 6-3.
    • Increased the melee attack of the Goblin Impaler from 7-3 to 8-3.
    • Increased the melee attack of the Goblin Rouser from 6-3 to 7-3.

User interface

  • Various minor cleanups and refactoring of the new widgets.
  • Added a new scroll label widget.
  • Allowed usage of wildcards (? and *) in friend and ignore lists.
  • Allowed usage of lists in /friend, /ignore and /remove commands. (feature #7492)
  • Added a new image widget.
  • Added a feature to draw hex coordinates and/or terrain code on every hex. Available in-game via :sc and :tc commands, and in editor2's menu.
  • Move the attack indicator on it's own layer and show at a higher layer so its view won't be obscured by the terrain (bug #12401).
  • Basic support for keyboard controls in main menu (arrow keys + enter) (fr #3835)

WML engine

  • New command, [store_time_of_day], makes it possible to store ToD info in a WML array/container.
  • Changed underlying_id in unit to be unique number
  • New command, [end_turn], ends the current side's turn.
  • Add scale_background key to [story] (bug #10738)

AI

  • Made it possible to use formula AI for recruiting when using default ai
  • Changed defaults for AI parameters: village_value, villages_per_scout, protect_leader, protect_leader_radius, leader_value
  • Added new ai paramater number_of_possible_recruits_to_force_recruit which tells AI when it must move leader back to keep.
  • Improved leader movement and protection.
  • Improved village grabbing and protection.
  • Made 'caution' to control how dangerous place AI tries to attack

Miscellaneous and bug fixes

  • The config dir can now be changed when defining APPDATA_USERDATA at compile-time to default to a dir under %APPDATA% on windows. When specifying --config-dir on the command line %APPDATA% is used even without that define.
  • Fixed the list of the unit's attacks getting cut off in the right panel (bug #12297).
  • Fixed wesnoth not to try to add duplicate ids to unit_map
  • Fixed a bug where the old unit type's abilities and attacks weren't completely cleared during level-up
  • Improved performance of 'recall' user action when disallow_recall is set to true in scenarios.
  • Various code cleanups
  • Removed the requirement for files in ~campaigns to have a corresponding directory.

Version 1.5.4

Editor2

  • Rotate clipboard 60 deg. cw/ccw, ctrl+r/ctrl+shift+r respectively (cmd instead of ctrl on Mac). Active in the "paste" mode.
  • A drag operation only creates one undo action instead of many.
  • Partial undo feature to keep the old behavior of drag undo available
  • More visible selection - draw a special overlay on every selected hex.
  • Allow different map generators to be used in map -> generate map (FR #3950)
  • Reverse the preprocessor logic in src/ to default to building editor2, with a DISABLE_EDITOR2 define to build without it.

Graphics

  • New portraits: Silver Mage (male), Mage of Light (male).
  • fixed the parts of the undead flags which were not TC'd

Language and i18n

  • updated translations: Chinese (Traditional), Czech, French, Galician, German, Hungarian, Italian, Lithuanian, Polish

Music and sound effects

  • Added a new music track "The Dangerous Symphony" by Gianmarco Leone.

Units

  • Balancing changes:
    • Made units with the healthy trait take half the damage from poison.
    • Decreased the ranged attack of the Bowman from 7-3 to 6-3.
    • Added the marksman special to the ranged attack of the Orcish Assassin line.
    • Decreased the melee attack of the Orcish Assassin from 8-1 to 7-1.
    • Decreased the melee attack of the Orcish Slayer from 10-2 to 9-2.
    • Increased the cost of the Walking Corpse from 7 to 8.
    • Increased the cost of the Soulless from 11 to 13.

User interface

  • Made the "slowed", "poisoned" and "stone" floating label translatable according to the affected unit's gender. (bug/feature #11957
  • Parts of the new widget libary are deemed stable enough for testing and have been started to replace the old code.

WML engine

  • fix bug #11988: Events with multiple types are multiplied
  • added a new image-path function: CROP(x,y,w,h) - it extracts a slice of a graphic with the requested dimensions. (feature #12067)
  • allow variable substitution in event names
  • allow spaces or underscores to be used interchangeably in event names
  • In event attack filters ([filter_attack] and [filter_second_attack]), weapon= attribute has been deprecated in favour of AnimationWML-like attack filtering, which allows to filter damage type, range and weapon specials. Backwards compatibility with weapon= will be removed in 1.5.5.
    • As a consequence, [fire_event] has had [primary_unit] weapon= and [secondary_unit] weapon= deprecated too; use [primary_attack] and [secondary_attack] blocks instead.
  • In events triggered by unit fighting ('attack' et al), the weapon info is automatically stored in the 'weapon' and 'second_weapon' WML variables; this works just like 'unit' and 'second_unit'.
  • fix various minor bugs with attack filtering
  • Fixed linewrapping with not to wrap markups (bug #11946 and bug #11945)
  • fix bug where max_experience of stored units was not the true max when playing with under 100% exp. settings
  • Added support for labels and items that are hiden by fog (patch #1101)
  • Made it possible to use another color palette as second parameter in RC(A=B) image path function by using '=' instead of '>' as parameter separator; this allows simple color replacement that RC(A>B) did not allow.
  • prevent some negative/nonsense values in direct WML unit modifications
  • Renamed the advanceto key in [unit_type] to advances_to in order to be consistent with its own and [unit]'s internals.
  • implemented FR #11817: Allow [item]s to be visible only to specified teams (patch #1100 by Broodkiller)

Networking

  • removed null termination character from end of packet send by wesnoth

Miscellaneous and bug fixes

  • Applied changes suggested by bug #11676 to wesnoth-optipng.
  • Changed side_drop handling not to automaticaly assign AI for side if leader is dead (bug #12186)
  • Changed the behavior of [modify_turns] value= to default to -1 (no turn limit) instead of 50 if an invalid string is passed instead of a number.
  • Fixed [modify_turns] causing weird behavior when used in prestart or start events to change current turn.
  • Made config cache code available to eveverywhere in wesnoth
  • Fixed [modify_turns] giving the unwanted side-effect of changing turn limit when only current= modifier was used.
  • Fixed OOS bug when giving control and having move in undo stack.
  • Fixed [modify_turns] not updating $turn_number when current= was used.
  • Fixed crash when ai moves units next to level 0 hiden unit (bug #12252)
  • Fixed loading ai parameters. MP side defination now overwrites era values (bug #12171)
  • Fixed MP saves to transfer correct completion state to remote clients when loadin game (bug #10385)
  • Fixed can move enemy units (causing OOS) (bug #11205)
  • Fixed a few inconsistencies related to scenarios which are not at turn 1 at the beginning (namely start autosave detection and initial triggering of a matching "turn *" event).
  • Removed the compiler work arounds for MSVC6.
  • Added some more compiler workarounds for MSVC9.
  • Removed the --small-gui build option, starting Wesnoth with the --smallgui parameter achieves the same
  • new --nomusic commandline option to disable music for the session

Version 1.5.3

Campaigns

  • Descent into Darkness
    • Changed how the beginning of the scenario 'Descent into Darkness' works.
    • Changed how the ice breakage works in 'Beginning of the Revenge'.
    • Many minor fixes and tweaks to various scenarios.
    • New graphics for Apprentice Necromancer and Dark Mage.
    • New indoor maps for 'A Small Favor' parts 2 and 3.
  • Sceptre of Fire
    • Fixed a bug that allowed one to finish 'The Dragon' by defeating both enemy leaders.
    • Fixed a coordinate bug that caused 'Hills of the Shorbear Clan' to not end when it was supposed to.
  • Son of the Black Eye
    • Fixed the shamans not getting removed from the recall list when they should.
    • New portraits for Inarix, Jetto and the old orcish shaman.
    • Reworked the scenarios 'Civil War' and 'Coward'.

Editor2

  • Future replacement for wesnoth_editor, launched from title menu or via wesnoth -e. Most old editor's features are duplicated, with some improvements.
  • Built by default in scons, cmake and autotools, if building manually see RELEASE_NOTES.
  • See https://www.wesnoth.org/wiki/Editor2 for details and known issues.

Language and i18n

  • updated fonts: DejaVuSans 2.26
  • updated translations: Chinese (Traditional), Danish, Finnish, Galician, German, Italian, Latvian, Lithuanian, Polish, Russian, Slovak, Spanish

Multiplayer

  • Removed the "Great War" MP era
  • Revised maps: Caves of the Basilisk, Den of Onis, Fallenstar Lake, Silverhead Crossing, Sullas Ruins, The Freelands, Alirok Marsh, Island of the Horatii, 3p Morituri, Blue Water Province, 4p Hamlets, Lagoon, 4p Morituri, The Wilderlands, Waterloo Sunset

Music and sound effects

  • Engine automatically plays special music on defeat or victory; default lists from which an option is randomly chosen at runtime are provided as the default_victory_music and default_defeat_music attributes in [game_config] node; this may be overriden per-scenario using the victory_music and/or defeat_music attributes on its code - it can also be overriden in a [endlevel] block by providing a music= attribute with the desired list (feature request #11203).

Python AI

  • Added ai_init.py and ai_launcher.py to make it easier to customize AI environment and startup. Both are used by the new embedded python implementation.
  • reversed builtin is now allowed. This allows for random.shuffle to be called.

Terrains

  • Added a new attribute, hidden= (default: no), to [terrain], which prevents the map editor from offering the user a particular tile type for drawing.
  • Made user-made content graphic rules be parsed before core ones, so custom tiles look the same in-game as they do in the editor.
  • Set hidden=yes on main terrain archetypes (Gt, Qt, At, Xt).

User interface

  • Added an experimental add-ons update interface.
  • Added initial drag&drop support for button widgets
  • Fixed a broken translation which gave all females the prefix female^ on alignment description when using the "C" locale or any translation that is missing that string.
  • Make the load and recruit hotkey use the ctrl instead of cmd key on non Mac systems

Campaign server

  • Made campaign server encode CRs in old content in first startup

WML engine

  • Fixed the filtering for x,y=recall,recall in [store_unit] and [kill] tags
  • Fixed the bug where any changes to the primary unit in the "advance" event were totally ignored
  • Added some convenience macros for units: {TRANSFORM_UNIT}, etc.
  • Extended [modify_turns] to allow scenario designers to change the current-turn number dynamically with current=.
  • It is now possible to use [time_area] to add or remove new local ToD areas and their schedules during scenario events. Removal requires to associate an id. to [time_area]s, or it won't work. Uses Standard Location Filter to match locations.

Miscellaneous and bug fixes

  • Add some gcc-4.3.0 compilation fixes (patch #1083)
  • Added a MSVC 9 project file and some fixes for that compiler (patch #1093)
  • Add-on uploads by default will skip all dot-files (.*), which are hidden files or directories in UNIX filesystems.
  • Downloaded add-ons' meta information is stored in /_info.cfg rather than /info.cfg now; both the in-game client and the wesnoth_addon_manager Python script have been updated for this.
  • Fixed bug #12094: Event "last breath" cannot be triggered for attackers
  • Fixed [filter_attack] and [filter_second_attack] not being effective in die/last_breath events.
  • Fixed FULL_HEAL WML macro not working properly.
  • Fixed NR Krash inexplicably disappears from recall list (bug: #11612)
  • Fixed segmentation fault when wml modified and killed attacker and defender in a battle
  • Fixed Wesnoth crashing after an attacker/defender_hits/misses event if the WML kills one unit and replaces/unstores the other

Version 1.5.2

campaigns

  • Son of the Black Eye
    • new set of portrait art
    • in 'Black Flag', there's now several galleons transporting enemies to the beach, and no watch towers
    • in 'Saving Inarix', you can now more precisely control when you destroy the bridge
    • many assorted small tweaks to most scenarios
    • when leading the Great Horde, all units now require 1 less upkeep
  • Tutorial
    • Fixed players side name to same as leaders name (bug: #10114)

formula AI

  • added variant_iterator to iterate over variant elements
  • modified choose, filter, find and map functions to use variant_iterator, so they work correctly with a variant_map type
  • new formula AI functions: contains_string, find_shroud, movement_cost, tolist, tomap, is_unowned_village, max_possible_damage_with_retaliation
  • added possibility to fallback to human player
  • new ai object members: side, my_recruits, recruits_of_side, time_of_day, units_of_side, villages_of_side
  • moved most of formula AI releated code from ai.cpp to formula_ai.cpp
  • new unit_type_callable and attack_type_callable classes
  • new unit_callable members: undead, attacks, abilities, traits
  • various fixes and improvements to formula functions