The Battle for Wesnoth v1.15.0 Release Notes
-
### 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)
- Micro AIs