* wc: fix#6513 Bezoar artifact
The item now applies the effects directly instead of using [trait]s,
The lua code that added traits in the wc lua files didn't work, but the main reason why i preferred this solution instead of changing the lua files is that it makes it possible to simply remove the artifact via for example [remove_object] (which wouldn't work for artifacts using traits as those are separate modifications)
The code now also adds a dummy ability so that players know that this unit has the benefits of the healthy fearless and undead traits.
S16 (Hasty Alliance) uses more rocks and bridges, including
bridges over lava.
S19a (Snow Plains) gets some dirt roads without snow on, and the
edge of the map gets some ice and water.
S19b (Swamp of Dread) gets a wide variant of swamp terrains
instead of sand.
S22 gets more variety in the forests and grasslands.
Cherry-picked from the branch in PR #8243.
HttT S17 map height +5
According to several hundred test runs, Konrad's castle seems to be produced between y=59 and y=71 when the center of the chamber is set at y=65 as it currently is.
Because map_height=75 means that the playable map size is y=73 due to the border hexes at the top and bottom, this change probably guarantees that Konrad's castle is fully within the playable map.
Fixes the following bugs :
Stop scroll_text from growing infinitely and instead show the
scrollbars when the text dimensions exceed the default size of
the underlying multiline_text in some dialogs (such as edit_pbl,
the pbl publishing editor).
Allow horizontal_grow/vertical_grow to work correctly. Currently,
the widget stops vertically growing due to absence of
max_height=0, again in some specific dialogs.
EI - dra_nak_dead branch bugfix. Fixes#8414.
* S18 conditionally forwards the player to the bonus scenario, S99. One of the required conditions is that dra_nak_dead is not yes. The victory event of S12 unconditionally cleared dra_nak_dead, meaning that that test in S18 would always pass.
* S12 tests dra_nak_dead to see if he was killed in S11, and if he wasn't then it renames "Varrak-Klar" to "Chief Dra-Nak", as if Dra-Nak was pursuing the heroes. However, S12 didn't set the dra_nak_dead variable if the renamed Varrak-Klar died.
EI - S12 bugfix flying undead being drowned/trapped
* In EI S12, units were killed/lost when a bridge is destroyed.
* Flying units shouldn't be killed/lost, as they can fly.
Instead of copy-pasting the multiplayer turns over advantage function, just use that function directly.
This required making some changes to the function to better support this specific use-case,
but I think it's still better than copy-pasting it.
I split the primary functionality out into two separate pieces – calculation and display.
Thus, the main function is technically unchanged, while WoF can avoid the weird things it does
and just calculate and display how it wants.
This fixes#8368.
When Terraent was created, the mainline paladin had no standing anim. When that was added, it conflicted with Terraent's. This fixes that issue.
This also updates Terraent's other stats to match the mainline paladin's rebalanced stats.
When a unit data passed to `to_map` either lacks a side or has
side zero, implementation automatically sets it to 1, thus the
existing code worked fine. However:
1. The lack of a `side` could trigger a warning in EmmyLua. It
currently doesn't trigger that, but would with Celtic Minstrel's
planned improvements in Wesnoth's lint hints.
2. The tutorial should be good example code, and the special-case
in the C++ code that made this work is a case of "assume it's a
SP situation, and choose the result that benefits side 1".
If Mal-Talar dies in S01 then a new leader (actually just a rename)
turns up in S06b and S07b, but the replacement name, "Mel Kevek",
wasn't marked as translatable.
For the case that both necromancers from S01 were killed, S02 already
had a fallback to Mal-Bakral. This reuses it and adds documentation.
This will automatically record the gender (if specified) of each
[unit], [unit_type] and [side].
The hint "gender=male,female" is often applied to [unit_type]name=,
although that's usually the male name. I believe that's the only
downside of this change.
* Konrad on a sand hex ends the scenario (previously he needed to reach flat terrain)
* Adjust the map so there's more water before reaching the sand hexes.
Each [teleport] tag should have exactly one each of [source],
[target] and [filter]. Missing any of those is caught immediately
above the new conditional block, so this makes having two or more
of any of them be treated the same.
The log should maybe be made more visible, but it's a case that
can already be detected by schema validation, so validate it
there instead.
The code in teleport.cpp uses assert() in the cases that the
newly-added code in this commit catches. That's bug 8175, and
it's probably still reachable for units with teleport abilities,
so this doesn't close that bug.
The intro to this map shows Rugnur running into the stronghold, with the
elves not far behind. Those moves were running into shroud, which
generated "could not find move_unit_fake route" warnings because the
animation prefers routes that moving side can already see.
Also, have the conversation between Alanin and Rugnur take place with
Alanin on a road hex, because if he starts on the keep then he takes a
long route to avoid cave terrain.
Standing on the runes changes some hexes to impassable,
so it's a change to the game state. It isn't a random
event, so it would be possible to add an [on_undo], but
that seems unnecessary, and would need to handle
multiple runes.
I used level 3 deprecation because this is something that was intended for internal use in the ai_helper module, and the ai_helper module itself is not an officially stable API
Just removing transparency from all images on the top bar and side bar causes other issues, particularly with the unit sprite and the clock icon alignment.
Fixes#8335
Change the Lua implementation to directly call the
non-deprecated function, this is related to 9daa10a9f2.
Clean up the C++ header files by removing the declarations of
functions that were removed in 3c8de46771.
Use [endlevel]end_credits=no in the test scenario (trigger it
by moving to hex 9,3). If you debug with :next_level without
triggering the moveto, "The End" will show; trigger the moveto
first, and it won't show the credits.