I have made changes to ALH which diverge from the original design of ALH. I added features which rely for a large part on details about how Atlantis works. One such component is the routeplanner, which can calculate how long it takes for a unit to travel from its current location to its destination. This takes properties of the terrain, roads and weather into account. It does not support the atlantis v5 'queued up' movement points yet. It can also create a move order with the fastest path to the destination for you, see the $move Pseudocommand.
As ALH is now aware where units are going, as a convenience the destination hex will show the arriving units in the unit list at the bottom, with a yellow background color. You can issue orders to them, regardless of whether you have the departure or the arrival hex selected. Units which are leaving a hex have a blue color, and guards have a brown color. Note - a unit may need more than one turn to arrive at its destination. It will not show in hexes along the route.
If ALH knows how shafts are connected it can predict movements to the underworld. ALH learns this when one of your units travels through a shaft. If you know how shafts are connected and want to tell ALH this, you can use the connect shafts option from the menu.
Another major change is that new units, such as NEW 1, are no longer transient. They keep exisiting even after you select another hex to look at. Instead of typing the FORM X command in the orders for another unit, ALH does this for you. Right click on the unit which should create the new unit and select "Split". In the Split Unit dialog you can directly give items from the original unit to the new one and issue orders for the new unit. After splitting, you can select the new unit and modify its orders. Repeated @FORM no longer works.
Another feature is the economy prediction. ALH is quite good at predicting how much silver a unit will have during the various phases when the turn runs. It will calculate how much silver a unit will tax for, its study costs, which units will share silver if you use the SHARE 1 flag, and whether a unit will have enough maintenance silver to survive the maintenance phase. You can activate these options in the Economy Menu; when you start ALH they are always off.
Feedback is welcome, you can leave me a message on discord @Zorky#3892 or erwin@bridgebar.nl.
./configure make
[ALIASES] - In this section aliases must be in underscored
form, like Horse_Training. In orders both forms
are valid, so it ok to write "Horse Training"
as well.
format:
alias = name
[COMMON] - common settings
values:
HEX_SIZE_LIST - comma separated list of hex sizes
MEN_THRESHOLD - if number of your men in a hex is bigger then
this number, thick bullet will be displayed on
the map.
REPORT_CACHE_MAX - how many reports to keep in memory.
BRIGHTNESS_DELTA - difference in brightnes between normal and
read-only edit panes.
DECORATE_ORDERS - add some comments to the generated order file.
LEAD_SKILL_BONUS - Leaders and heroes skill bonus for Arcadia games.
TAX_PER_TAXER - how much silv each taxer collects per turn.
CHECK_FACTION_X_NEW_Y - 1 to check, 0 to not check if actual FACTION X NEW Y unit exists.
Of course, you need faction's X report and orders for the check.
BATTLE_STATISTICS- 0 to disable battle statistics. Checked during report load
UPKEEP_LEADER - The maintenance fee for leaders
UPKEEP_PEASANT - The maintenance fee for normal characters
[LIST_COL_UNIT_<set name>] - set of columns to be diplayed in the unit list
format:
sequence = width, flags, property, column_name
sequence - order in which columns will appear in the unit list
width - column width, easily changed with a mouse :)
flags - 0 for left alignment, 1 for right alignment
property - property name, alias or group name
column_name - display name for the column
[UNIT_PROPERTY_GROUPS] - unit property groups which can be displayed
in the unit list as columns
format:
group_name = comma_separated_list_of_property_names
values:
junk_items - items you do not need, used for popup menu action
discarding junk items.
trade_items - used to calc trade points for buying them.
men - used to find out if a particular item in unit's posession is a men
mag_skills - used to find out if a skill is a magic skill, needed for Arcadia
[PANE_MAP] - settings for the map panel
values:
DASH_BAD_ROADS - show bad roads by dashes or by color
WALL_WIDTH - line thickness for drawing walls.
FLAG_WIDTH - line thickness for drawing flags.
ROAD_WIDTH - line thickness for drawing roads.
[MAX_SKILL_LEVELS] - maximum skill levels for races
race = speciallevel, defaultlevel, comma separated list of special skills
[MAX_SKILL_LEVELS_MAGIC] - maximum magic skill levels for race heroes (Arcadia)
race = speciallevel, defaultlevel, comma separated list of special skills
[RESOURCE_LAND]
LandType = comma separated list of advanced resources, example:
Forest = IRWD, YEW
[RESOURCE_SKILL]
skill = comma separated list of resources and required skills, example:
LUMB = IRWD 3, YEW 5
[STRUCTURES] - structures and comma-separated list of their attributes.
The following attributes are possible:
MOBILE - it is ship
MIN_POWER NN - value of minimum required number of sailors
MAX_LOAD NN - ships capacity
HIDDEN - special skills required to see the structure
ROAD_N - Road N
ROAD_NE - Road NE
ROAD_NW - Road NW
ROAD_S - Road S
ROAD_SE - Road SE
ROAD_SW - Road SW
SHAFT - It is shaft
For example:
Balloon = MOBILE, MIN_POWER 10, MAX_LOAD 800
[PLANE_SIZE] - ah.st.cfg. When you know the dimensions of your world, enter
them and ALH can use them to wrap the map before you explore
the edge. Syntax: plane_name = x-min,y-min,x-max,y-max.
For example:
[PLANE_SIZE]
Overworld = 0,0,29,29
underworld = 0,0,9,9
id - unit id
name - unit name
description - full unit description
factionid - faction id
faction - faction name
landid - id of region the unit is in
structid - id of a structure the unit is inside
structowner - is unit an owner of a structure?
structname - name of a structure the unit is inside
comments - the first comment line of default orders/comments
pane (the first character of a comment line is ';')
orders - orders
teaching - shows how many students per teacher this unit is
teaching (rounded up), or how many days of
teaching the unit receives (rounded down).
weight - unit's weight.
movement - movement mode.
sequence - report's order of units.
flags_standard - standard unit flags, condensed into string.
flags_custom - custom unit flags, comma-separated.
flags_custom_abbr - custom unit flags, numbers condensed into string.
examples: ;$move 10,14 ;$move mountain (10,14) ;$move Peghtmont MOVE NE NE NE NE NE NE NE N N ; 9 turns MOVE SW NW NW 1 IN NE ; 5 turns ;$move 10,14,2 <underworld> ;$move cavern (10,14,2 <underworld>) MOVE SE SW SW S ; 4 turns ;$upkeep 2 ; will reduce silver count by 20 for a peasant. @;$travel ride ; do not warn about multi-turn move order @;$travel walk ; quite useful for livestock transports, or perhaps for horse-pulled wagons. One caravan: @TURN give 123 all iron ;$checkzero stuff give 123 all silv ;$move 4,4 ENDTURN @TURN take from 456 2000 silv ;$move 5,7 ENDTURN
SILV < 0
LEAD == 0 and SILV > MEN*10*12 and (SWOR >= MEN or XBOW >= MEN)which returns all armed non-leader units having enough silv for a year.
string.find(flags_standard, "a") >= 0