Switching to a different item cleared the data, but didn't clear the
cache of where the page breaks are located. The subsequent call to
`get_data_paged(int which_page)` has a bounds check for the page number,
so it's sufficient to just clear the page breaks, which is already ok
as it resets the object to the same state as a newly-created instance.
Forward-ported but currently untestable in master, as the page-selection
buttons are only shown when there's a large amount of text, which triggers
the known regression (the credits-crash bug).
(cherry picked from commit 7cb5f09bcf0de4b5a2cc26a593cffa2d5cfbcd14)
A side with a leader holding the hill keep gets bonus gold each turn, A treasure chest which only a leader can unlock further rewards the first player to take the hill. Each side gets two leaders. If one dies then another can be "recalled" (recruited) from the recall list at its full unit cost. Computer players will try to take the hill with one of their two leaders.
Restore text_alignment documentation that got lost in 6389c1e.
Add documentation for can_shrink missing from adb5ef9.
Update documentation for link_aware missing from 7188781.
The basis for this rework is lowering the extremes in acrance resistances between units and factions. That allows for more free usage of arcane damage and helps with balance of games in which high levels are way more frequent than in standard default 1v1 or 2v2.
Having these in canon felt like a plot hole in other campaigns. If an
apprentice mage could make these amulets circa 350 YW then every village and
border-fort should have them, but Wesnoth's storylines work better if a
messenger on horseback is the usual method of long-distance communication. For
example, TSG is about a commander sent to discipline a lazy outpost, only to
find that they should have brought reinforcements. When it's the enemy trying
to communicate, DM S21 and UtBS S08 both involve stopping the messengers.
This changes the intro to have a beacons for communicating with the trade
caravans, I'm leaving it ambiguous whether it's a smoke signal or a fire
signal. Fire beacons might make more sense if the village sees the caravan's
campfires at night and, in normal usage, light the beacon to trade.
While this adds beacons to canon, they're an ancient technology with a limited
range and very limited bandwidth. There are easy plot reasons not to set
beacons up, such as the costs of having people watch for and maintain them,
there are easy plot reasons why they don't work on a given day, such as
weather, and there are easy plot reasons for attempted communication to be
ignored by assuming that it's a fire for a different purpose.
Previously suggested in https://r.wesnoth.org/p669889 .
when selecting a unit with an active ability only when adjacent to another, it marks active when the cursor is placed next to it
and with https://github.com/wesnoth/wesnoth/pull/7805 it's the problem of displaying the halo with an ability that only affects adjacent units, in this case the owner briefly displays the halo when he moves to side of a unit meeting the conditions
Adds support for using these in the weapons and ability filters:
* "-1", which was previously treated as an parse error (no number before the separator).
* "-3--1"
* "-infinity" as the lower number in the range, provided a different upper number is given.
This treats "-infinity" (with no other number), "-infinity--infinity",
"infinity" (with no other number) and "infinity-infinity" as errors. It seems
unlikely that someone would intend to use a filter that can't match any
reasonable number.
The range "-infinity-infinity" will be parsed successfully. I don't see a use
case for that, but nor do I see a reason to add extra C++ to reject it.
However, it's not added to the schema, as I think it's good for the schema to
give a warning when someone creates a filter which will accept every value
(including accepting the default, so "-infinity-infinity" accepts the unset
value too).
Includes new unit tests for the C++ and the Lua stringx.parse_range functions.
The next commit adds more WML tests, but is kept separate to credit the author.
This started as a change to move common filter functions from unit.cpp to
somewhere that they could be reused for other config-based filters. In the
process a missing feature was found and added, the move is still included in a
single Git commit because the move was required in order to make these
functions accessible to the Boost unit tests.
Two CodeBlocks project files additionally get src/utils/any.hpp added,
which was in one of them but missing from the other two. I noticed because
these are alphabetically at the start of the src/utils file list.
Thanks to @CelticMinstrel for the review comments and Xcode project updates.
For any given event name, events execute in order of decreasing priority.
Priority is a real number, and may be assigned via the `priority` attribute for
the WML [event] tag, or through the Lua APIs:
- wesnoth.game_events.add({priority = number})
- wesnoth.game_events.add_repeating(name, action, [priority])
Note that delayed variable substitution is not currently supported in the WML attribute.