Looks like un_recall_unit_cost() is used to retrieve the unit cost of the recalled unit but it also decrements the recall count, duplicating the decrement in un_recall_unit().
If you exit the dialog before the initial timer fires, you'll end up with a crash when it attempts
to execute. This solution seemed simpler than assigning a temp timer to the delay timer.
A [terrain_mask] is simply a map. It can be smaller than the map, and can be offset. As a map, it can give special locations which can be used to position units, and queried by WML. With this change the names are properly applied to the underlying map, offset relative to the [terrain_mask]. A name given in the [terrain_mask] replaces that name in the underlying map, regardless of the original location. A map file can define only one name per location. A name can have only one location; but a location can have any number of names. To define additional names for a location, stack [terrain_mask] maps giving each. Once placed on the map, a name cannot be removed.
Previously this was done in the move execution, which resulted in:
1. own and allied units on tunnel/teleport exits effectively acting as
ambushers and
2. unit reaches and shortest paths not being consistent with actually
possible moves.
Both issues occurred even without fog being active.
The former was unintuitive at best, while the latter could cause
serious problems, for example with AI code. By moving the check for
units on tunnel exits to the teleport map creation, both these issues
are taken care of simultaneously.
Only visible units are considered. In the presence of fog, enemy units
and units from allies without shared vision continue to interrupt the
move as expected.
A few cases were skipped, most of which involved 2D bitsets (eg shroud)
or uses that could not be easily translated (eg GUI1 multimenu).
In a few cases, code needed to be updated for the different API that the
dynamic_bitset provides, but in most cases, this change is entirely
transparent.
There are probably a few unnecessary dynamic_bitset.hpp includes.
One use of vector<bool> was replaced instead with std::bitset, since
the dynamic size was not required.
Formerly, to find Moremirmu, simply check (11,13) and, if not there, he is in (10,17). Oh HARD, there was a 1-in-2 chance of finding Xakae in (11,13), instead, and (9,15) was always empty. On NORMAL, Xakae is in (9,15).
Now, the odds of finding Moremirmu in a given temple are 1-in-3, as are the odds of finding Xakae unless playing on EASY where he is not present.
This removes the ugly string markup and makes the dialog parse the config directly.
This also temporarily disables the display of credits in the help browser.