All Versions
224
Latest Version
Avg Release Cycle
-
Latest Release
-

Changelog History
Page 4

  • v1.15.7 Changes

    ### Add-ons server

    • Added basic command line options.
    • Add-on validation status responses can now be translated by the client.
    • Fixed an issue where incremental downloads would always transmit a delta for updating from the very earliest available version of an add-on to the very latest, instead of using the current and target versions specified by the client.
    • Incremental downloads are no longer allowed to cheat the download counts. ### Add-ons client
    • It is now possible to install previous versions of an add-on if present and not expired on the server. ### Campaigns
    • A Tale of Two Brothers:
      • S02: Changed the antagonists' motive and dialogue to sound more believable
    • Secrets of the Ancients:
      • Revisions to Bone Captain
      • Scenario 2 uses new Iron Fence terrain, in preparation for potential map revisions.
      • While the two leaders are separated, only the currently active one learns new zombie types.
    • Sceptre of Fire:
      • Scenario 2p5: increased the turn limit by 1 and enhanced victory filter conditions
      • Scenario 4: fixed a bug that prevented resources from spawning and added some small flavor adjustments
      • Some revisions/bugfixes to Scenario 9 "Caverns of Flame" ### Multiplayer
    • During allies' turns, use orb colors to show which ones can still move (issue #1424). Also enabled for allied AI sides in singleplayer. ### Terrain
    • New barrier terrain: Iron Fence (^Eqf) - similar layout to the existing wooden fence ### Translations
    • Updated translations: British English, Catalan, Polish, Portuguese (Brazil) ### Units
    • Decreased Icemonax's advancement XP requirement from 26 to 25 to match other dead-end L0 units.
    • Portrait and animation graphics for some of the new Wesnoth Fauna
    • Balancing:
      • Dune Rider xp changed from 42 to 47.
      • Sunderer line defense on hills changed from 60% to 50%.
      • Scorcher gold cost changed from 23 to 25.
      • Dragoon gold cost changed from 27 to 28.
      • Elvish Rider gold cost changed from 32 to 28. ### User interface
    • Added the installable/upgradable version selection to the add-ons manager via a dropdown list
    • Fixed formatting of hyperlinks when the same URL appears more than once in a block of text ### Miscellaneous and Bug Fixes
    • Fixed a rare issue on Windows that could result in wesnoth.exe sticking around waiting for console input after encountering an error despite not being launched with the --wconsole option.
    • Fixed a potential crash when drawing many images on the story screens.
    • Fixed the schema's list of attributes supported by IntroWML.
    • Fixed and renamed IntroWML's [image]resize_with_background=yes to keep images proportional to the background.
    • Fixed precise log timestamps missing a space between the timestamp and the log severity label.
    • Improve the in-game help's topic about orbs, add crowns and ellipses.
    • Removed documentation for network proxy-related command line options previously removed in version 1.13.1 along with libana.
  • v1.15.6 Changes

    ### Add-ons client

    • Implemented support for incremental add-on downloads and uploads (issue #5046, PR #5038). ### Add-ons server
    • The server configuration no longer contains the add-ons list/metadata (PR #5038):
      • Metadata is now stored in individual data/<addon_name>/addon.cfg files (PR #5038).
      • Full add-on packs are now stored as data/<addon_name>/full_pack_<version_md5>.gz files instead of data/<addon_name>.
      • Hash indexes of full add-on packs are stored as data/<addon_name>/full_pack_<version_md5>.hash.gz.
    • Implemented support for incremental add-on downloads and uploads (issue #5046, PR #5038):
      • Incremental update packs are stored as data/<addon_name>/<version_from_to_md5>.gzfiles.
      • Incremental update packs are allowed to be sent by clients in [upload] and may be asked from the server in [request_campaign].
      • The server can generate an incremental update pack while servicing [upload] if the client doesn't send one (e.g. old clients).
    • Previous versions of add-ons are stored on the server for a limited amount of time alongside update packs for older versions (30 days by default) (PR #5038). ### Language and i18n
    • Updated translations: British English, Czech, French, Japanese, Polish, Portuguese (Brazil)
    • The font-handling now checks which glyphs are in each font, instead of using a list hardcoded in WML.
      • A bug in the removed code treated the first font containing U+4E00 as having the whole CJK Unified Ideographs block.
      • Fixes a bug where many Chinese characters were invisible if DroidSansJapanese was loaded before DroidSansFallbackFull (issue #5194).
    • Changing the language immediately updates the order of the fonts, instead of waiting for the next restart (issue #5194). ### Lua API
    • Implement new GUI2 widget userdata for working with custom dialogs.
    • Renamed wesnoth.show_dialog to gui.show_dialog. The preshow and postshow now take a single parameter - a widget userdata.
    • All other dialog functions (such as wesnoth.get_dialog_value and wesnoth.set_dialog_value) are now deprecated. ### Multiplayer
    • Delay Advancements modification:
      • The Delay Advancements modification allows changing how advancements are handled. With this enabled, units that previously would have advanced on another player's turn will instead not advance until it is again their side's turn. The benefit of this is that units will also not pick an advancement at random if they have multiple. ### Packaging
    • When building wesnothd with database support enabled, Boost 1.66 is now the minimum required version. ### Terrain
    • New wall variation: Overgrown stone walls ('Xof') ### Units
    • Added Tusker line - Gorer and Tusklet (by TSI 2009)
    • Revised Falcon and Elder Falcon sprites
    • New units:
      • Swamp Lizard (crocodile)
      • Cave Bear
      • Icemonax
      • Giant Stoat
      • Fire Ant
    • Balancing:
      • Cost of Giant Rat changed from 6 to 5.
      • Cost of Giant Scorpling changed from 13 to 12.
      • Cost of Fire Guardian changed from 19 to 11.
      • Cost of Giant Mudcrawler changed from 16 to 11.
      • Cost of Giant Scorpion changed from 22 to 16.
      • Cost of Wolf changed from 17 to 15.
      • Cost of Chocobone changed from 38 to 28.
      • Cost of Cuttle Fish changed from 40 to 36.
      • Cost of Great Wolf changed from 30 to 21.
      • Cost of Gryphon changed from 40 to 29.
      • Cost of Water Serpent changed from 26 to 23.
      • Cost of Direwolf changed from 36 to 33.
      • Cost of Sea Serpent changed from 40 to 55.
      • Cost of Wild Wyvern changed from 54 to 75.
      • Cost of Wyvern Rider changed from 80 to 102. ### WML Engine
    • Fix a bug with [set_variables][join] failing on boolean (yes/no) values ### Miscellaneous and Bug Fixes
    • Removed font-analysis utils: codecomp codeextract codeglyphs codelist
    • [harm_unit] now calculates liminal damage by using the 1.15 algorithm
  • v1.15.5 Changes

    ### Add-ons client

    • Fix: when using the "system default language", add-ons' titles and descriptions were always shown in English (PR #5109) ### Campaigns
    • Northern Rebirth:
      • Removed the campaign's evil branch. Not a player-visible change, as there was no way to access this branch.
    • Secrets of the Ancients:
      • Use new gui2 widgets API in the custom zombie-recruitment dialog
    • Under the Burning Suns:
      • Quenoth Elves now appear as a separate group in the help pages
      • Fixed ghost spawning code in S02 (this means more ghosts will spawn)
    • World Conquest:
      • Clean-up of spelling, grammar and other issues in translatable strings.
      • use new lua gui2 api in WC mapgen settings
    • Mass convert of *^Uf terrain for SP.
      • Updates DW, DM, DiD, HttT, LoW, SotA, THoT and TSG ### Language and i18n
    • Updated translations: British English, Catalan, Chinese (Simplified), Esperanto, French, Hungarian, Polish, Portuguese (Brazil), Russian, Spanish, Turkish ### Multiplayer
    • A New Land:
      • Peasants can harvest mushrooms (a bug introduced in 1.15.4 was noticed and fixed in PR #5137) ### Terrain
    • Made single-hex mushrooms smaller (PR #5136) ### User interface
    • Help browser: fix inconsistent behavior for single-clicks opening and closing sections (PR #5110)
    • Added [race]help_taxonomy=, creating links between the per-race topic pages. ### Miscellaneous and bug fixes
    • Minimum required version of OS X is now OS X 10.11 .
    • The "loyal" trait is now displayed in the help browser, even though no normal unit has it.
    • The player can recruit even if their recruit list includes an unknown unit type. This will now show an error dialog and then the recruitment dialog with the known units.
    • Fix [micro_ai] when called from lua (issue #5134)
    • Fix [load_resource] not marking an add-on as used for the "ignore global tags set by add-ons that are not used" feature. ### Packaging
    • macOS package distributed through SourceForge is now a UDIF lzfse-compressed image. The image size may be slightly larger but opening and copying from this image is much faster.
    • Another fix if the credits (including all add-ons) are extremely long. There are still known issues with this.
  • v1.15.4 Changes

    ### Add-ons client

    • Ensure the client doesn't re-download dependencies that have just been updated during an Update All run by re-reading add-on versions after each update batch (issue #3273).
    • Added new syntax and UI support for providing localized add-on titles and descriptions (PR #4984). ### Campaigns
    • Delfador's Memoirs:
      • S12: Fix a few case where dialog and events sound odd or fire out of order (issue #4614).
    • Liberty:
      • Revised dialogue and added miscellaneous new events to all scenarios.
    • Northern Rebirth:
      • S5a: Fixed a bug where enemies could trigger a hidden door.
    • Sceptre of Fire:
      • Fixed a bug where the new rune shop was not working as intended; added an event to tell players of the existance of the runeshop (S3).
      • Tweaks to dialogue and victory conditions (S2p5, S3, S4, S5, epilogue).
      • S8: Fixed a case where the dragon would suicide into pursuers offscreen.
    • Under the Burning Suns:
      • Rebalanced all Quenoth units and all scenarios
      • Embellished all remaining maps (S1, S2, S6b, S8, S11).
      • Finished Tauroch Rider line sprites, added riderless Tauroch standalone unit.
    • World Conquest:
      • Added to mainline (formerly World Conquest II). ### Language and i18n
    • Updated translations: British English, Chinese (Simplified), Chinese (Traditional), Czech, Esperanto, French, Hungarian, Italian, Japanese, Polish, Portuguese (Brazil), Russian, Spanish, Swedish, Turkish.
    • Removed the l10n-track file, which was a mechanism for marking translated images as out-of-date. ### Lua API
    • New wesnoth.get_max_liminal_bonus function.
    • New wesnoth.colors table to get information about colors.
    • Support lua_function in side filters.
    • add wesnoth.get_resource() function. ### Terrain
    • New ancient/weathered stone floor tile (code Ias).
    • New ancient stone stone walls variation (code Xoa).
    • New earthy rockbound cave variation (code Uhe). ### Units
    • New Dunefolk skirmisher branch (Falconer).
    • Dune Spearmaster shield damage changed from 14 to 13.
    • Burner line and Armageddon Drake cold resistance changed from -50% to -40%.
    • Dragonguard HP increased from 59 to 63.
    • Steelclad HP changed from 55 to 57.
    • Poacher HP changed from 32 to 33.
    • Heavy Infantryman cold resistance changed from -10% to 0.
    • Troll Rocklobber HP changed from 49 to 51.
    • Merman Hunter HP changed from 30 to 33.
    • Wose cold resistance changed from 10% to 0.
    • Shaman ranged damage changed from 3 to 4.
    • Bone Shooter HP increased from 40 to 42.
    • Banebow HP increased from 50 to 55.
    • Ghost cost changed from 20 to 19. ### User interface
    • Improve appearance of the Logging Options dialog and add a search box. ### WML engine
    • [advancefrom] is now deprecated, use [modify_unit_type] instead.
    • The .cfg files generated by the scenario editor can now be loaded with [scenario]map_file=, previously they had to be loaded via preprocessor include.
    • The student, attacker and defender variables can now be used in formulas in abilities.
    • Units no longer get healed when recalled (they still get healed at the end of the scenario).
    • The engine now ignores global tags set by add-ons that are not used in the current game. ### Miscellaneous and bug fixes
    • Added missing side controllers to two Micro AI scenarios (fixes #4890).
    • Fix broken callbacks for treeviews in wesnoth.show_dialog
    • Fix floating label duration being measured in 'frames', it is now measured in milliseconds.
    • Added unit type variation selection to the debug mode Create Unit dialog (PR #4986).
    • Removed the Python2 versions of tools with Python3 versions.
    • Removed the rmtrans plugin for Gimp, as it was Python2 and seems to be unused.
    • {HEAL_UNIT} does no longer set the variable heal_amount. If needed, [heal_unit] can be used instead.
    • Added new modify_unit tags to schema validation.
    • Fix rare oos errors caused by move_unit_fake
    • Fix crash on invalid music files.
    • Fix crash when reading .mo files with non-ascii characters on windows.
    • Fix crash in the MP Create Game dialog when a map has an unknown tile.
    • Improve the in-game help's topic about dealing with losses.
    • Add a comment at the start of any .cfg file created by the scenario editor, warning against manually editing such files.
  • v1.15.3 Changes

    ### AI

    • Merge Experimental AI candidate actions (CAs) into default AI
      • CAs merged: retreat injured, spread poison, place healers, move to any enemy
      • CAs not merged: grab villages and village hunt, as the respective default AI CAs are better as general purpose CAs. Also not merged was castle switch, which can cause undesired behavior in singleplayer scenarios, and recruit rushers, which is too different from default recruiting (would change balance too much) and because it can currently not deal with multiple leaders and all the recruitment aspects. An option to use this alternative recruiting will be provided in the future.
      • Previous default AI CA removed: retreat phase
      • The previous default CA is still available by using [ai]ai_algorithm=ai_default_rca_1_14 or by selecting "1.14 Default AI" in the multiplayer computer player selection menu
      • The Experimental AI is now only available in debug mode (in MP) as it is mostly identical to the new default AI
      • Many improvement were made to the new default CAs, to make them work correctly and consistently in general settings, such a taken AI aspects (aggression, attacks, [avoid], caution, ...) and unit guardian status into account, improved attack ratings and multi-leader functionality, and bug fixes
    • Bottleneck Defense Micro AI:
      • New optional parameter [filter]
      • Fix bug of units not participating if too far in front of the bottleneck
    • Healer Support Micro AI: take unit guardian status and passive_leader aspect into account
    • Forest Animals Micro AI: rabbit holes on the map border are now automatically excluded
    • New ai_helper functionality: path finding, next_hop and get_attackable_enemies taking avoid into account; next_hop with pre-calculated path and fanning out; new options to get_cheapest_recruit_cost
    • Add [filter_own] optional tag to all default and Experimental AI candidate actions
    • Allow comma-separated list of ids in addition to 'yes/no' for AI aspects leader_ignores_keep, passive_leader and passive_leader_shares_keep
    • Fix [leader_goal] for sides with multiple leaders
    • Change E_NOT_REACHED_DESTINATION from error to warning
    • The advancement aspect can now also use amlas. ### Campaigns
    • An Orcish Incursion:
      • Moved to addons server
    • Descent into Darkness:
      • Add new portrait for Dela Keshar
      • Remove dark adepts from recruit list
      • Add special units and AMLA paths
      • Revised dialogue
      • Increased map interactability
      • S3: reworked scenario
      • S5: adjust enemy recruits and gold
    • Legend of Wesmere:
      • S3: fix scenario-breaking bug introduced in 1.15.2
    • Liberty
      • Revise gameplay in all scenarios and redraw all maps
      • Merge S6 and S7 into a new scenario
    • Sceptre of Fire:
      • General prose/dialogue revision
      • New scenario (now the third)
      • Various map and scenario updates
      • Make use of rails terrain
      • Dwarves can purchase runes (temporary status boosts)
    • Secrets of the Ancients:
      • Prevent hero death from triggering new corpse recruitable dialog (issue #4503)
      • Fix last breath dialog for bats firing multiple times in the campaign
      • Fix bug of regular WC appearing in recruit list in S05 Blackwater
      • Fix special plague attack making rats when spiders are called for
      • Fix missing portraits for Shynal
    • Tutorial:
      • Redraw S2 and reduce difficulty
    • Wings of Victory has been removed. ### Editor ### Language and i18n
    • Updated translations: Ancient Greek, Chinese (Traditional), Czech, Dutch, Esperanto, Finnish, French, Italian, Korean, Portuguese, Portuguese (Brazil), Russian, Spanish, Turkish
    • Fix Rename Unit dialog having untranslated text (issue #4569).
    • Use /translations instead of /translations to find core translation catalogues on Windows. ### Terrains
    • Add Stone Walls variation Catacombs (Xot) including some overlays
    • New dwarf castle variations: Non-cave (Cf), ruined (Cfr) and snow (Cfa)
    • New elf castle variation: snow (Cva)
    • Fixes and touchups to mushroom terrains Tb and Tf ### Units
    • Add a ranged attack and the cures ability to Elvish Lady
    • Add mushroom defense cap to mounted and some flying units
    • Decreased hitpoints of Dwarvish Lord from 79 to 74
    • Decreased hitpoints of Dwarvish Steelclad from 59 to 55
    • Increased hitpoints of Dwarvish Thunderguard from 44 to 47
    • Increased hitpoints of Dwarvish Pathfinder from 42 to 45
    • Increased melee damage of Dwarvish Stalwart from 7-3 to 8-3
    • Increased melee damage of Dwarvish Sentinel from 9-3 to 10-3
    • Dunefolk: rebalancing and renaming of various units
    • Dunefolk: some graphics additions and updates
    • Orcs: revise some unit descriptions
    • Elves: revise all unit descriptions
    • Cost of Drake Warrior changed from 30 to 32
    • Cost of Drake Arbiter changed from 31 to 32
    • Cost of Drake Trasher changed from 31 to 32
    • Cost of Drake Flare changed from 35 to 33
    • Cost of Sky Drake changed from 30 to 28
    • Cost of Saurian Ambusher changed from 30 to 24
    • Cost of Saurian Oracle changed from 27 to 28
    • Cost of Saurian Soothsayer changed from 27 to 25
    • Cost of Dwarvish Steelclad changed from 32 to 36
    • Cost of Dwarvish Thunderguard changed from 30 to 27
    • Cost of Dwarvish Stalwart changed from 32 to 30
    • Cost of Dwarvish Berserker changed from 33 to 30
    • Cost of Outlaw changed from 28 to 26
    • Cost of Trapper changed from 27 to 21
    • Cost of Gryphon Master changed from 37 to 38
    • Cost of Swordsman changed from 25 to 29
    • Cost of Knight changed from 40 to 38
    • Cost of Lancer changed from 40 to 44
    • Cost of Dragoon changed from 34 to 27
    • Cost of Duelist changed from 32 to 29
    • Cost of Lieutenant changed from 35 to 34
    • Cost of Merman Warrior changed from 28 to 26
    • Cost of Ogre changed from 33 to 30
    • Cost of Goblin Knight changed from 32 to 28
    • Cost of Goblin Pillager changed from 32 to 28
    • Cost of Troll changed from 29 to 27
    • Cost of Troll Rocklobber changed from 29 to 25
    • Cost of Naga Warrior changed from 27 to 24
    • Cost of Orcish Crossbowman changed from 26 to 21
    • Cost of Orcish Slayer changed from 33 to 26
    • Cost of Elvish Hero changed from 30 to 26
    • Cost of Elvish Captain changed from 32 to 28
    • Cost of Elvish Marksman changed from 37 to 31
    • Cost of Elvish Ranger changed from 38 to 31
    • Cost of Elvish Rider changed from 31 to 32
    • Cost of Elvish Druid changed from 34 to 27
    • Cost of Elvish Sorceress changed from 34 to 32
    • Cost of Elder Wose changed from 31 to 27
    • Cost of Revenant changed from 28 to 31
    • Cost of Deathblade changed from 28 to 34
    • Cost of Dark Sorcerer changed from 32 to 33
    • Cost of Blood Bat changed from 21 to 22
    • Cost of Red Mage changed from 40 to 38
    • Cost of White Mage changed from 40 to 38
    • MP of Merman Spearman changed from 6 to 7
    • HP of Merman Spearman changed from 40 to 43
    • MP of Merman Javelineer increased from 6 to 7
    • HP of Merman Javelineer changed from 55 to 58 ### User interface
    • Moved tutorial to campaigns menu
    • Moved language button to icon
    • "Core" type add-ons are now only accessible via hotkey.
    • Removed "Classic" in-game theme.
    • Textboxes now have a hover effect as well as an I-beam cursor.
    • 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.
    • Reworked styling of progress bars and the network transfer progress dialog.
    • Moved the MP server list from a separate dialog to the Connect to Server dialog proper and added functionality for managing player-defined servers (issue #4564).
    • The load-game dialog can now see the directories used by Wesnoth 1.14, 1.12, etc.
    • The search box in the Campaigns menu now takes campaign abbreviations and descriptions into account.
    • The recruit and recall dialogs have a tooltip over the level number to show what the unit can advance to (issue #4135) ### Lua API
    • unit:transform() now takes an optional variation parameter
    • Support side.variables for access to side variables, similar to unit.variables
    • New read-write keys in unit userdata: ellipse, halo, description, renamable
    • New functions for working with WML: wml.merge, wml.diff, wml.patch, wml.find_child, wml.attribute_count, wml.equal, wml.valid, wml.interpolate
    • wesnoth.wml_matches_filter renamed to wml.matches_filter (the old name still works)
    • Moved to units module: wesnoth.create_unit, wesnoth.get_unit, wesnoth.get_units, wesnoth.get_recall_units
    • The wesnoth.units module now acts like a metatable for unit userdata.
    • New wesnoth.units.find gets units on either the map or any side's recall list.
    • Moved to interface module: wesnoth.scroll, wesnoth.zoom, wesnoth.get_mouseover_tile
    • wesnoth.interface.get_displayed_unit aliased to wesnoth.unit.get_hovered
    • unit portrait and recall_filter are now writable
    • Moved to new sides module: wesnoth.get_sides, wesnoth.is_enemy, wesnoth.match_side, wesnoth.get_starting_location, wesnoth.set_side_id, all AI-related functions
    • Functions that previously only took a side index as the first parameter now also accept the side proxy userdata.
    • The wesnoth.sides module acts like a metatable for the side userdata.
    • Added __tostring functions to a number of Wesnoth userdata types.
    • Unit movetype functions renamed (defense_on, movement_on, vision_on, jamming_on, resistance_against). The defense_on and resistance_against functions return the actual values, rather than the raw WML values.
    • New function wesnoth.units.chance_to_be_hit is equivalent to deprecated wesonth.units.defense but conveys the meaning better.
    • Unit movetype functions (excluding resistance) can take a location instead of a terrain code, for convenience
    • Side proxy now has starting_location member
    • Fix ai.aspects.grouping not returning the aspect's value
    • New stringx module exposes various split/join functions used by the engine, as well as trim
    • Wesnoth's format functions moved to stringx (format_conjunct_list, format_disjunct_list, vformat)
    • location_set module extended to support set operators (& | ~ -) as well as a few additional functions
    • new function wesnoth.create_side ### WFL engine
    • New functions resistance_on(), vision_cost(), jamming_cost() that work in gameplay contexts (eg filters)
    • Unit object now has resistance, defense, movement_cost, vision_cost, jamming_cost, flying
    • For FormulaAI, the game map object has an alternate access mode - map.gamemap[loc(x,y)] ### WML engine
    • Support upkeep in StandardUnitFilter
    • [effect]apply_to=variation now supports heal_full
    • Support [set/clear_variable] inside [modify_unit/side]
    • Support [variables] in [modify_side], as in [modify_unit]
    • [filter_weapon] implemented in abilities used as weapons specials to be the same as true weapons specials (implement filter_weapon in [filter_student] instead of [filter_self])
    • All special weapons can be used in [abilities] now (this was not the case yet for [heal_on_hit], [plague] and [swarm])
    • [time_area] can now be used without specifying a custom time schedule, this can in particular be used in the scenario editor if one just wants to mark an area to use in as [event] ### 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 where 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)
    • Fix --userdata-dir deprecation warning being printed when starting wesnoth without arguments when -DPREFERENCES_DIR="..." was defined at compile time.
    • Make wmllint recognize [load_resource] (issue #4538).
    • Removed map scaling algorithm customization. Nearest-neighbor scaling will now always be used.
    • Make wmllint ignore race= keys if they are part of filters inside [unit_type] (issue #4105)
    • Removed a few asserts from wmllint and postponed a few unit sanity checks to the closing of a [unit_type] tag (issue #4102)
    • Added tool tmx_trackplacer, a file converter for editing map tracks with Tiled (PR #4464)
    • Added tool trackviewer, which has the animation-preview functions of trackplacer (PR #4574)
    • Removed the python2 trackplacer tool (issue #4365)
    • Made wmlscope recognize and analyze optional macro arguments
    • Made map_file=Example.map support looking in the [binary_path]'s "maps/" directory (issue #4633)
    • Make wesnoth_addon_manager not generate packet.dump files any more (issue #4651)
    • Improved handling of defense cap and {NOTE_DEFENSE_CAP} in wmllint (issue #4379)
    • Removed the leftover Khalifate multiplayer faction files. (PR #4714)
  • v1.15.2 Changes

    ### AI:

    • Experimental AI:
      • Fix guardians being used for village actions
      • Fix poisoners ignoring [avoid] tag
      • Recruitment: add optional parameter high_level_fraction to make the ExpAI recruit units of level 2 or higher
      • Recruitment: adopt optional randomness parameter from the Rush Recruitment Micro AI ### Campaigns
    • Delfador's Memoirs:
      • S20: Improve leveling of units and give player a note about it (issue #4219)
      • S21: Better indication that the book has gone missing (issue #4220)
    • Descent into Darkness:
      • Use set colors for each faction throughout the campaign
    • Eastern Invasion:
      • Updated to use the new mushroom terrains (PR #4335)
    • Heir to the Throne:
      • S04: Sea Orc uses now a portrait
    • Northern Rebirth:
      • Updated to use the new mushroom terrains
    • The Rise of Wesnoth:
      • Updated to use the new mushroom terrains
    • Under the Burning Suns:
      • Updated to use the new mushroom terrains (PR #4336)
    • Wings of Victory:
      • S01: Make easier on easy and improve flow of enemies
      • Slight dialog improvements ### Editor
    • Added an editor-only overlay for deprecated terrains (PR #4347)
    • Re-enabled and updated the editor topics in the help browser (PR #4414) ### Language and i18n
    • New translations: Ancient Greek
    • Updated translations: British English, Czech, Chinese (Simplified), French, Italian, Japanese, Korean, Portuguese (Brazil), Russian, Spanish
    • Set up for translating the Wings of Victory campaign (PR #4265)
    • Changed the :help command's output to split over multiple lines
    • Added translatable explanations of :droid, :help and :idle's arguments
    • Allow carets in translatable strings - 'hintTbTf' will show 'TbTf' to the user
    • Removed translations: Old English (ang), Friulian (fur_IT) and Asturian (ast) ### Terrains
    • Added new Tf mushroom terrain whose statistics are fungus+base terrain, as suggested by the existing graphics (PR #4299)
    • Added Tb mushroom base terrain, which can be used alone or as TbTf when a terrain with the fungus-only stats is wanted ### User interface
    • 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).
    • The attack dialog now shows the correct name of an inactive weapon special (issue #4352).
    • Tooltips of sidebar, top bar, and status table now show a side's color's name in words, for the colorblind (issue #1217).
    • 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).
    • Hide the "Suppose Dead" key from the hotkeys list (it does nothing since 1.9.12)
    • Sidebar: In replays with "View: Full Map", show all enemy units in "Damage versus:" tooltip
    • Multiplayer Create Game screen now shows map previews for scenarios that use map_file= (PR #4407).
    • Remember zoom level between play sessions (issue #1518) and add zoom options to context menu (issue #1213)
    • Sidebar shows number of attacks left, for units that can attack multiple times per turn (issue #2667) ### Lua API
    • Accessing wesnoth.theme_items.unit_status no longer prevents the unit status (poisoned/slowed/etc) from being shown in the sidebar (issue #4079).
    • side.flag is now writable. wesnoth.set_side_id remains supported (issue #4396).
    • Units now have a __tostring method that shows their id and location. ### WML engine
    • Ranges can now have upper limit "infinity" instead of using a big number like "99" or "99999"
    • Print a deprecation warning for [terrain_type]'s partly-implemented vision_alias
    • Special notes for units now use a new system, with a [special_note]note= tag:
      • This tag is supported both in [unit] and in [unit_type]. If used in [unit], it will override the type's notes.
      • Standard special notes should now be added with {NOTE_*} instead of {SPECIAL_NOTES_*}.
      • In [effect]apply_to=profile, [special_note] is now supported to add/remove special notes.
    • Support for the deprecated "&image.png=text" syntax has been removed in all contexts - use the DescriptionWML attributes instead.
    • Fix infinite recursion in SUF with [hides] and [filter_vision] (issue #1389).
    • The {TRAIT_LOYAL} trait now adds the loyal overlay.
    • The ellipse, overlay & image_mods attributes of units are now reset when a unit advances. This means those attributes should now by default changed via [effect].
    • New tag [modify_unit_type] that goes into [campaign]/[era]/[modification] and can change some unit type properties like advancement and recruit costs.
    • New debug command :terrain for changing the terrain of the selected hex (PR #4405).
    • New predefined macros {LEFT_BRACE} and {RIGHT_BRACE} (PR #4432).
    • Weapon filtering special=* deprecated, replaced by new special_id=* and special_type=* (issue #3915). ### Miscellaneous and bug fixes
    • Fixed :droid's arguments not all being optional (issue #4308).
    • Ported the expand-terrain-macros, wmlflip, wmlparser, umc-dev/build/update_version, wiki_grabber, ai_test and unused_functions tools to Python 3
    • It's now possible to chat with oneself in SP campaigns. Chat is shown in replays (issue #1111).
    • Removed unused scoutDefault, journeylifter, wescamp_import and wmlvalidator Python tools
    • Fixed wmlscope not correctly performing expansion of square braces in filenames in some conditions
    • 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).
    • Improve the terrain code's encapsulation and documentation (PR #4411).
    • Fix duration=scenario objects expiry for units on the recall list at scenario end.
    • Fix maps with scenario_generation= being unavailable in the editor.
    • Passing relative paths to --user-data-dir is deprecated (part of PR #4449). However, on Windows relative paths that start with .\ are not deprecated.
    • Removed incomplete joystick support.
    • Removed option to disable unit and item halos.
    • Added support to wmlxgettext for double-quote characters in translatable raw strings
  • v1.15.1 Changes

    ### Editor

    • Fix buttons in the editor being inactive ### Language and i18n
    • Updated translations: German, Portuguese (Brazil) ### Multiplayer server
    • Add support for storing game information in wesnoth's mysql database (PR #4204)
    • When the forum user handler is enabled, the Multiplayer Moderators group is now also used when determining if someone is a moderator (PR #4136) ### Units
    • Fix typo in the Dune Ranger's advancements
    • Additional animations for the Wose Shaman (PR #4229)
    • Move Wose Shaman from DM and WoV to core (PR #4226)
    • Move Wose Sapling from TRoW to core (PR #4226) ### WML engine
    • Support for the deprecated "&image.png=text" syntax for [option]message= has been removed - use the DescriptionWML attributes instead. ### Miscellaneous and bug fixes
    • use the 1.15 add-ons server
    • Fix a crash if the credits (including all add-ons) are very long (PR #4207)
  • v1.15.0 Changes

    ### AI

    • Micro AIs
      • Add [avoid] tag functionality to Multipack Wolves, Wolves, Swarm and Goto Micro AIs
      • Support named locations for [micro_ai] tag location keys
      • Goto and Assassin: fix MAIs not working with tunnels when using custom path finding cost functions
    • Experimental AI
      • Deprecate EXPERIMENTAL_AI macro: use ai_algorithm=experimental_ai in the [ai] tag instead
      • Convert to using external candidate actions
      • Significantly speed up recruiting evaluation
      • Recruiting: add optional 'enemy_types' parameter
      • Adjustments to candidate action scores
      • Variety of internal evaluation improvements
    • All Lua AIs
      • Fix bug crashing some AIs when units with chance-to-hit specials without id are on map (same as what had already been done for the Fast Micro AI)
      • Do not use hard-coded values for modifiable parameters in wesnoth.game_config
      • Fix experience for killing level 0 units
      • Distinguish between healing locations and villages
      • Significant amount of internal cleanup, including some efficiency improvements
    • ai_helper library
      • New functions get_healing_locations(), get_reachmap(), get_avoid_map() and get_locations_no_borders()
      • get_closest_enemy(): change return values (breaks backward compatibility)
      • find_best_move(): return nil instead of {} if no move found (may break backward compatibility in rare cases)
      • Deprecate filter(), choose() and xyoff()
      • move_unit_out_of_way(): prevent potential for divide-by-zero
    • Default AI
      • Remove attack_depth aspect (had been non-functional for a long time already)
      • [goal]name=protect_unit: do not protect units hidden from the AI
      • General code clean-up, in particular of TODOs left over from 1.7 and 1.9 ### Campaigns
    • A Tale of Two Brothers:
      • S2 'Chase': improved behavior of undead side leader with custom AI
    • Delfador's Memoirs:
      • S08: Show carryover report to make it clear the scenario has ended
      • S09 & 10: Increase difficulty
      • S12: Allow respective recruits when the loyalists & mages join Delfador
    • Secrets of the Ancients:
      • Added ability to recruit different kinds of walking corpses during the campaign.
      • Unit type naming convention cleanup.
    • Son of the Black Eye:
      • S03: remove unused objective note
    • The Hammer of Thursagan:
      • Removed scenarios 4 (Troll Bridge), 5 (Invaders), and 7 (Mages and Drakes)
      • Reworked scenario 8 (Fear) and rebalanced other scenarios
      • Added new character and updated some dialogue
    • Under the Burning Suns:
      • Refactor code in various scenarios to be more readable
      • Various bugfixes (objectives, allied vision, unit spawns, event firing)
      • S8: change water to rise based on timer, not player movement
    • Wings of Victory:
      • New campaign added to mainline (Intermediate level, 11 scenarios).
    • Deprecate AI Controller and remove it from mainline campaign scenarios ### Engine
    • Windows 7 is now the minimum supported Windows version.
    • Add command-line arguments for detecting invalid WML.
    • Revise mechanics of the liminal alignment to match up with the intended meaning.
    • Healing animation is shown when the patient is invisible. (PR #3643) ### Language and i18n
    • Updated translations: British English, Bulgarian, Chinese (Simplified), Chinese (Traditional), Czech, Dutch, French, Galician, German, Hungarian, Italian, Japanese, Lithuanian, Polish, Portuguese (Brazil), Russian, Scottish Gaelic, Slovak, Spanish, Turkish, Ukrainian. ### Lua API
    • Allow specifying custom flags (in particular teleport) when using a custom cost function in wesnoth.find_path
    • Add wml.load() and wml.parse() functions
    • wml.tostring() now outputs a string that can be parsed back to WML without loss of data.
    • Add wml.clone() function that performs a deep copy of a config or vconfig.
    • Organize API functions into several new (sub)modules: gui, wesnoth.units, wesnoth.interface
    • Allow WML tag names injected with wml.tag to start with underscores.
    • Add a map helper object usable in lua map generators, that supports fast filters. Similar to standard location filters.
    • The lua map generators can now access (read, not write) game variables, from the end of the previous scenario in campaigns
    • The [lua] tag now supports a name= attribute, that is used a a name for the lua code in in stack traces
    • Add wesnoth.generate_default_map to be usable in lua map generators which just invokes the default map generator.
    • Add game_config.combat_experience ### User Interface
    • Don't show in the sidebar the time of day schedule of a shrouded hex. (issue #3638)
    • Make unit_weapons report display weapon specials as active/inactive correctly. (issue #4071)
    • macOS: Dark GUI on macOS Mojave and later when dark appearance is enabled.
    • Observers are now required to enter a game's password as well, rather than just players needing to enter the password. ### Packaging
    • OpenMP support has been removed. It is no longer an optional build-time dependency. ### Units
    • Saurian warriors are now female. (issue #3392)
    • Giant Scorpion now has 20% resistance to arcane and 0% to all other resists
    • Added Sand Scuttler variation to the Giant Scorpion with same resists as original unit
    • Move Fire Dragon portrait from TRoW and SoF to core
    • Move Orcish Leader portraits to Orcish Ruler and use grunt variation portrait for Leader
    • Increased Mermaid Initiate advancement line hitpoints (Diviner 41->45, Enchantress 38->39, Priestess 31->35, Siren 49->51)
    • The Dunefolk faction was overhauled to improve balance against the six Default factions ### 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 ['specials'] in abilities except plagues, heal_on_hit and swarm , which emulate the weapon specials with [affect_adjacent] in option and the possibility to affect all weapons filtered(used with 'Initiative' in httt or 'Formation' in utbs). (don't put filter_weapon in 'filter_self/opponent' like in true weapons specials).
    • 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
    • Support [filter_team] in [item] in addition to team_name=
    • Support an optional EXTRA_WML argument to {REMOVE_LABEL}.
    • Support [disallow_end_turn]reason=
    • The {SPECIAL_NOTES_*} macros now start with a newline and a bullet point.
    • Support [unit]jamming=
    • Support [movetype]flying= and deprecate [movetype]flies=, for consistency with [unit]flying=
    • Add [set_menu_item] persistent=yes/no.
    • [modify_unit] now has a faster lua implementaion for the most common cases.
    • [unit] moves=-1 no longer removes attacks.
    • [item] supports a z_order attribute that describes in which order the items are drawn.
    • New terrain_mask implementation, adds alignment= attibute to terrain_mask. ### Miscellaneous and bug fixes
    • Rest healing now happens on turn 2. (issue #3562)
    • Normal healing now happens on turn 1 for all sides except the first. (issue #3562)
    • [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.
    • Re-added the Font Scaling preference.
    • Enabled wesnothd and campaignd to accept IPv6 connections too
    • Added support for directly supplying IPv6 address of the server to multiplayer client and addon client. It must be done like this: [ipv6_address] or [ipv6_address]:port
    • 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
    • The sidebar, recall dialog, etc now show attack's range (melee/ranged) and damage type (arcane/blade/cold/...) using icons. (PR #3732, #3740)
    • Add hit count statistics to the statistics dialog. (PR #4070)
    • Added FULL option for :droid command. (PR#4147)
    • Observers must now also enter the password before observing a game that is password protected. (PR#4140)
    • A message is now displayed when observers share IP addresses. (PR#4138)
    • Game bans are now also enforced by username. (PR#4139)
    • Usernames on the host's ignore list are automatically banned. (PR#4143)
  • v1.14.15 Changes

    ### Add-ons client

    • Fix potential crashes when working with installed add-ons that have a corrupted _info.cfg file. ### Campaigns
    • Descent into Darkness:
      • S11: fix low probability case of enemy being unreachable
      • S11: recall ghosts if available and ensure the player gets one level 2 ghost.
    • Eastern Invasion:
      • S03: fix the initial keep being blocked at the start ### Translations
    • Updated translations: British English, Catalan, Czech, French, German, Italian, Japanese, Polish, Portuguese (Brazil), Russian, Turkish ### User interface
    • Fixed formatting of hyperlinks when the same URL appears more than once in a block of text ### Miscellaneous and Bug Fixes
    • Fixed a rare issue on Windows that could result in wesnoth.exe sticking around waiting for console input after encountering an error despite not being launched with the --wconsole option.
    • Removed documentation for network proxy-related command line options previously removed in version 1.13.1 along with libana.
  • v1.14.14 Changes

    ### Add-ons client

    • Add-on titles and descriptions translated to the current language are used when available. The original English title is displayed in the UI and considered for search purposes in addition to translations. ### Add-ons server
    • Made it possible to provide translations for add-on titles and descriptions at upload time in the .pbl (PR #4993). Only clients running 1.14.14/1.15.4 or later can read the translated values. ### Language and i18n
    • Updated translations: British English, Catalan, Chinese (Simplified), Chinese (Traditional), Czech, Esperanto, French, Hungarian, Italian, Polish, Portuguese (Brazil), Russian, Spanish, Turkish ### Multiplayer
    • 5p - The Wilderlands:
      • Player 5’s units are sorted when cycling through them with the »n« key.
      • Map tweaks (changes to some castles & villages, the northern river and embellishments) ### User interface
    • Do not list nameless abilities in the Abilities and Ability Upgrades lists in unit descriptions in Help (issue #3060).
    • Fixed disabled buttons using the pressed highlight color. ### Miscellaneous and bug fixes
    • Made wmllint recognize [remove_time_area] in order to avoid spurious warnings about unit ids.
    • Files created by the scenario editor include a boilerplate warning about hand-editing them.