fix unit move+attack aborted, 21961

stupid c++ allows int to bool implicit cast.
add a TODO comment to properly fix 21902
battle_calcs.lua: fix bug in get_attack_map_unit() for enemy units

Own units with MP left need to be taken off the map before enemy path
finding, not just added to the table.
add set_action_bonus_count when attacking

Duthlet noticed this was missing.
fixup fe722172ae (add set_action_bonus_count)
Fix bug #21967: fix crash when unit modification to traits has empty id
wmllint: change "usage of" magic comment to re.search

There seems no particular reason to require that this magic comment be at
the very beginning of the line, so why not switch from re.match to
re.search.

Also, update comments to reflect the fact that UtBS no longer uses this
magic comment.

A suggestion has been made to get rid of this magic comment now that UtBS
is no longer using it, but it may still be in use in some UMC somewhere.
html.py: format add-on description for HTML

The description text does not get rendered very well on a webpage. One
solution might be to use pre-wrap/word-wrap in the CSS, but due to
differences between browsers, that's a can of worms (at least for me, I'm
not a web pro).

So, the not-so-elegant solution is to add <br/> to every line.

URLs are also not linked in the plain text. Although in modern browsers
you can select the text and right-click, it's still convenient to turn
them into actual links.
html.py: import re module

Bugfix for last commit.
add remark about 21965 to RELEASE_NOTES
remove spurious WML variable manipulations in playcampaign.cpp

these appear to cause replay corruption, and bugs 19218, 21562

the replay_start cfg is already set correctly as the snapshot
at the start of a game, in playsingle_controller.cpp, in the
play_scenario function:

https://github.com/wesnoth/wesnoth/blob/0aa13d477d156929616a7409010474c4dc6b5439/src/playsingle_controller.cpp#L372
update changelog
add precise_timestamps setter
commandline option for precise timestamps
enable msvc bool conversion check.

we now enable warning 4800. I ran though the msvc compile with this
warning
and i found some (in overlay.hpp, unit.cpp, whiteboard/move.cpp)
unintended
implicit bool b = cfg["attributename"] casts that use the implicit
attribute_value to int cast and then a int to bool cast. So for
attributename=true b would be false. So i believe this is a useful
warning.

There are also a lot of implicit int to bool cast from the SDL and LUA
C-libraries
which use int instead of bool because C doesn't have bool. In this case
this
warning is less useful, but i still think it's worth it since a "!= 0"
or "== 1"
isn't cost.

Plus if someone really wants to disable this warning he can still
disable it in
the msvc project settings, while before is was not possible for someone
to enable
this warning the the settings.
more robust replay.cpp functions

we now add nonundoable commands at the current position instead of
assuming
at_end(), this way nonundoable replay entrys like speak can now also be
added
while we are not at end.
Usually playturn_network_adapter ensures that we are always are at_end()
and i didn't get any error with the previous solution but the new
solution
is just more robust in case something goes wrong.
Note that we cannot add nonundoable commands at end if we aren’t at end
because
in that case the user would see the message again when he replays it.
Note that we cannot just do this for normal command because it might
bring the
replay in disorder.
tidyup replay.cpp
more robust replaying of moves

we now set skipsighted to true if there is no fog or shroud.
The intention is that if a player uses fog=no in debugmode we still get
the same move destination in replays.