Spread poison: bug fix for units ignoring [avoid] tag
Castle switch: bug fix for units-on-keep check
Remove village hunt CA
Add ids for candidate actions
Fix bug crashing some AIs when units with chance-to-hit specials without id are on map
Fast Micro AI: fix re-adding default CAs when deleting the MAI
Bottleneck Defense Micro AI: fix bug of units not participating if too far in front of the bottleneck
Lua AIs: several other minor behind-the-scenes bug fixes
Campaigns
Descent into Darkness:
S1: reduced difficulty
Heir to the Throne:
Modify campaign starting date
Legend of Wesmere:
Fix various date inconsistencies in historical references
Sceptre of Fire:
S1: Fix reference to LoW events
The South Guard:
Change Halidel to be Deoran's great-grandfather
S7b/S8b: reduce enemy gold values and modify dialogue upon allied unit death
Tutorial:
S2: Make the first grunt cross the bridge, otherwise the scenario is too hard
Under the Burning Suns:
Sun Singer and Sun Sylph: modify faerie fire colors
Language and i18n
Updated translations: British English, Chinese (Simplified), Chinese (Traditional), Czech, Dutch, Esperanto, French, German, Italian, Korean, Portuguese (Brazil), Russian, Spanish, Turkish
Fix Rename Unit dialog having untranslated text (issue #4569).
Lua API
wesnoth.deprecate_api was fixed to correctly wrap tables with metatables (issue #4079).
Music and sound effects
Removed accidental silence of two seconds after the first track of each scenario (issue #4459).
Units
Add various new death, standing, and idle animations
User interface
Fixed some severe game rendering issues with SDL 2.0.10 (issue #4237, issue #4245, issue #4510).
Draw ellipses during draw/sheath animations (issue #1527).
In the combat dialog and elsewhere, clicking the "Profile" button opens the help on the correct unit variation (e.g., Walking Corpse (Swimmer)) (issue #4142).
Ensure enough space to display turn numbers in the hundreds.
The search box in the Campaigns menu now takes campaign abbreviations and descriptions into account.
Added the Private Replay checkbox to the Multiplayer Create Game screen. This separates whether observers are allowed from whether the replay will be publicly available.
In the recruit dialog and recall dialog, units that are too expensive to recruit/recall are grayed out (PR #4362, PR #4444, part of issue #1282).
Reworked styling of progress bars and the network transfer progress dialog.
Removed "Classic" in-game theme.
Textboxes now have a hover effect as well as an I-beam cursor.
Packaging
The Wesnoth client now looks for the data/dist file when logging into the multiplayer server. This file should contain one of the following values based on what distribution channel the package is for: Default, Steam, SourceForge, Flatpak, macOS App Store, Linux repository, iOS, Android, BSD repository
Miscellaneous and bug fixes
New build-dependency: Python3 is required to run the WML unit tests (on non-Windows)
80% of WML unit tests now run in a batch using a single instance of Wesnoth (non-Windows only)
New help topic outlining common (and less common) reasons for losing a scenario (PR #4217).
Add help text for some debug commands (part of issue #2500).
Make wmllint recognize `[load_resource]` (issue #4538).
Make wesnoth_addon_manager not generate packet.dump files any more (issue #4651)
S3: Changed castle to permanent chaotic ToD and rebalanced scenario accordingly
S4: Added dialogue between Baran and Tairach when they engage in combat
Dead Water:
S3: Added event to make Storm Trident more obvious
Descent into Darkness:
Complete revision of all dialogue and story text
Revised and rebalanced gameplay in all scenarios
S3 and S11: New scenarios completely rewritten from scratch
Eastern Invasion:
S1: Removed early finish bonus for fleeing
S2: Modified Dacyn's dialogue upon undead arrival
S7a: Require Dacyn to cross the river
S9: add snow to map
S10: show objectives after defeating enemy leaders
S11: show objectives after finding gold and releasing prisoners
Legend of Wesmere:
Disabled side shuffling in MP (checking the box does nothing)
Fixed missing persistent data at the end of chapter 3
Rebalanced gold values in all scenarios
S3: remove shroud from enemy sides upon Kalenz's arrival
S4: (MP only) free Cleodil at scenario start
Northern Rebirth:
Eryssa now must survive if she joins the player
Father Morvin and Sister Thera will now respawn at Tallin's location if they die to prevent illogical gameplay
Gold in S10-13 is adjusted if Krash is dead
S1: Spawn 2 Troll Whelps instead of 4 and a normal Troll
S4: Have Hamel describe Ghouls if Camerin is dead
S5: Add gates to map instead of images and overlays
S8: add text and updated objectives when rescuing Eryssa
S12a: Update objectives to make it clear that gold is not received if Sisal dies
The Rise of Wesnoth:
Fixed various typos
S17c: Modified Burin's description of trolls
The South Guard:
Fixed various typos
Tutorial:
Remove swamp from map for part 2
Warn player about water when stepping on any shallow water hex
Change quintain to level 0
Allow Konrad and Li'sar to level up and add corresponding dialogue for part 2
Under the Burning Suns:
Added embellishments to various maps
Language and i18n
Updated translations: British English, Chinese (Traditional), Dutch, French, Italian, Japanese, Lithuanian, Spanish.
Multiplayer
Dark Forecast: AI units are "discovered" (added to the help if not already known)
Dark Forecast: fixed bug where additional boss spawns would not occur after the initial wave
Multiplayer server
Forum user handler ban durations are now reported back to banned players.
Units
Updated descriptions for Goblin Knight and Wolf Rider
Add new descriptions for Quenoth faction
User interface
Add jamming to the vision tooltip in the sidebar. (PR #3327)
Fix undoing a recall not un-drawing parts of the sprite that go beyond the unit's hex (issue #3325)
Fix crash when the recruit filter matched nothing. (PR #3969)
"Show Enemy Moves" now highlights enemy units that can reach the highlighted hex. (PR #3961)
The time of day graphics for midday and midnight have been updated to match the rest of the summer/winter time of day schedules. (issue #2677)
Miscellaneous and bug fixes
Fix auxiliary attack end event handlers defined by FORCE_CHANCE_TO_HIT breaking if one or more of the affected units are removed by another attack end event handler (issue #3982).
The statistics dialog no longer forgets to reset stats when using "Reset Replay" ("Stop") in replay mode or "Back to turn" in networked MP games (issue #2852).
Fixed crash when the AI simulates a fight between two units which can slow but aren't yet slowed, then simulates another fight for one of them in Monte Carlo mode (issue #3650).
Experimental AI recruiting: fixed AI crash for unit type with unknown race
Support for modifying the available AIs using cores:
New parameter default_ai_algorithm for setting the default AI
New parameter mp_rank for setting the order in which AIs appear in the MP computer player selection menu
New option "Keep saved AI" when reloading games from the MP Create Game screen. Choosing this option prevents overwriting of the saved AI by the default AI. (issue #3791)
Forest Animals Micro AI: fix AI crash when using custom rabbit hole image
Fix Lua AIs using the ai.stopunit_*() functions potentially creating infinite candidate action loops
Campaigns
Dead Water:
S12: Slightly rebalanced enemy reinforcements and ai gold
Descent Into Darkness:
Allow converting L3 necromancers to liches from S12 onwards (issue #3165).
Added an alternative method of completing the campaign (issue #3167).
S8, S9 (A Small Favor II & III): Clarify objectives. (PR #3711)
S8 (A Small Favor II): Fixed units created via the plague ability not available in S9. (PR #3711)
Sceptre of Fire:
S1&2: increased difficulty
S6: additional guards for the elves
Secrets of the Ancients:
S01 Slipping Away: It is now obvious that the wild animals cannot cross the fences.
S02 Dark Business: Simplify scenario by removing the temporary invisible starting keep.
S05 Blackwater: Additional dialog from Ardonna at the start.
S11 Battleground: Ghosts are now able to be recruited after the scenario is complete.
S15 Mountain Pass: Bird bones moves so bird is easier to keep alive when discovered.
S21 Against the World: Leader of the elves is now same elf from S12.
S21 Against the World: Adjustment so player doesn't have to chase down some leaders at the end.
Proper animation for finding the bird bones.
Newly made liches will now receive a move point upon transformation if they weren't recalled. this turn and haven't moved yet.
The Hammer of Thursagan
S12 'The Underlevels': redesigned with completely new map and scenario
Northern Rebirth:
Fix loyal units obtained in S7 costing upkeep (introduced in 1.14.5)
S13: Improvement to the AIs
The Rise of Wesnoth:
S15: victory text is not used upon hero death
S17d: enemy units are killed upon victory except for bats
S22: cuttlefish now have the loyal icon
The South Guard:
Revised scenario and story dialogue.
Reworked and rebalanced all scenario and map designs.
Removed S6a 'Tidings Good and Ill'.
Tutorial:
S2: Wolf riders are not initially recruited, to not hinder the player from reaching the island in time
Language and i18n
Updated translations: British English, Chinese (Simplified), Chinese (Traditional), Czech, French, German, Italian, Japanese, Lithuanian, Russian, Scottish Gaelic, Slovak, Spanish, Ukrainian.
Lua API
Fix wesnoth.set_dialog_callback calling the function immediately when used in the previous callback. (issue #3794)
Fix wesnoth.set_dialog_value not triggering re-layout. (issue #3572)
wml.tostring() now outputs a string that can be parsed back to WML without loss of data.
Miscellaneous and bug fixes
Fix crash with custom themes on desktop PCs. (issue #3599)
Add --campaign-skip-story command line switch for skipping directly to turn 1. (issue #3472)
Remove --data option, --data-path has the same functionality.
Fix documentation of --render-image command line switch. (issue #3568)
Update manpage with options previously only documented by wesnoth --help.
Fix wrong ordering for BW / BF years, for example in Play a Campaign when sorted by date. (issue #3187)
GUI.pyw can now terminate a running maintenance script
Fix SDL_DestroyRenderer assertion failure under XMonad. (part of issue #3716)
Fix map item names not being translated in the scenario editor.
Usernames specified in the MP UI and command line are now stripped of leading and trailing whitespace, including newlines.
Show ability of a selected unit as active/inactive with respect to mouseover hex. (issue #3912)
macOS: Wesnoth now uses the app sandboxing feature, which means there is a new location for saves. All saves will be migrated during first launch automatically. For info about backwards compatibility see: https://gist.github.com/hrubymar10/eb5afd896f933a46fac344ced940e020
Many units lacking animations now have at least a defense animations
Multiplayer server
Fix stale temporary bans continuing to have an effect on players until cleared by phpBB on the next ban/unban operation.
Packaging
new scons option, intended to be used when building releases inside a git repo: autorevision=False
Fix build with Boost 1.69. (issue #3646)
Fix build with Pango 1.43. (issue #3840)
User interface
Fix regression: Game Load screen would not select 1.12 savegames. (issue #3561)
Fix regression: the in-game "Observers" icon (an eye) was covered by the minimap. (issue #3543)
Increase step size when clicking sliders in the MP Create Game dialog. (issue #3552)
Fix overlapping top bar elements with small screen resolutions. (issue #3714)
Don't scroll to an invisible unit that recruits another invisible unit. (issue #3559)
When a recruited unit is fogged, scroll to the recruiting unit and play recruit animation. (issue #3577)
Fix line breaks in first statistics line in unit type pages in the help. (issue #3256)
Don't scroll to an enemy unit that teleports to or from an invisible hex. (PR #3578)
Don't show in the sidebar the time of day schedule of a shrouded hex. (PR #3638)
Game Load screen gracefully handles savefiles that can't be parsed. (issue #3652)
The sidebar now shows alignment and damages as they would be on the hex under the mouse, rather than at the unit's current location. (PR #3642)
When a unit has multiple statuses (slowed/poisoned/invisible/etc), the sidebar shows all of them, not just the first. (issue #3197)
Fixed being able to dismiss a game lobby by pressing Esc.
Fixed multiple severe issues in the classic theme.
The "Attack Enemy" dialog now shows inactive weapon specials in gray. (PR #3686)
Taking screenshots in title screen is possible again (issue #3235)
The "Recruit Unit" dialog is searchable by unit type name. (PR #3787)
Add text filter to hotkeys preferences. (PR #3759)
Hide leader in status table if it's unfogged but invisible. (PR #3854)
macOS: Dark GUI on macOS Mojave and later when dark appearance is enabled.
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:
Show an undo reminder if one is out of moves, but can't end the turn yet.
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 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).
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.
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).
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).
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).