Alright, squads, armies, and army controllers time!
Small note, I use the nomenclature World map x/y and Block map x/y. World map refers the coordinates when looking at the world map, so for a small world they can be 0-31 (32x32). Block map refers to the entire block a single world map tile takes up, I believe this is always 48*32? Maybe, actually maybe I don't know what block map means, but you typically see numbers between a few hundred up to about 1300 so I think it's the smaller grained x,y information.
For squads all we really need to look at are the squad.orders (although anon_1 in squad is the army controller ID). I'm going to just be looking at the df.squad_order_raid_sitest order.
<squad_order_raid_sitest>
unk_v40_1 = -1
unk_v40_2 = -1
year = 23
year_tick = 17122
unk_v40_3 = 52 -- The army controller ID of the squad
anon_1 = 0
squad_order_raid_sitest.anon_1 = 4 -- The ID of the site being raided
anon_2 = <coord> -- This is the coordinate your squad left the forts map from
Short and sweet.
Now armies, nothing really of note here, most things are identified and pretty self explanatory. So I will just do a snip
<army>
id = 128
<snip>
unk_pos_x = <vector<int32_t>[9]> -- Block map x coordinates left in the current blocks travel
unk_pos_y = <vector<int32_t>[9]> -- Block map y coordinates left in the current blocks travel
unk_70 = <vector<int32_t>[11]> -- World Map x coordinates left in the armies travel
unk_80 = <vector<int32_t>[11]> -- World Map y coordinates left in the armies travel
<snip>
These were already known from others work and used in mifki's script to force a siege, they are just here for completeness
Moving on to army_controllers, this gets a little confusing so I won't snip anything
<army_controller>
id = 53
entity_id = 75
unk_8 = 10 -- ID of the site the army is going to
pos_x = -1
pos_y = 616 -- Are we sure this isn't a block pos_x
unk_14 = 1177 -- And this isn't a block pos_y
unk_18 = 0
unk_1c = 0
unk_20 = <vector<int32_t>[0]>
year = 23
year_tick = 17122
unk_34 = -1
unk_38 = 53 -- ID of the army controller again?
unk_3c = 286
unk_40 = -1
unk_44 = <vector<int32_t>[0]>
unk_50 = 8
unk_54 = <vector<int32_t>[1]> -- I think this is the ID of the mission being done, squads going on raids have a number here, other squads don't
unk_60 = <army_controller_unk60> -- Another construct, will discuss below
unk_64 = <army_controller.T_unk_64>
type = 2
<army_controller_unk60>
anon_1 = <vector<army_controller_unk60.T_anon_1*>[1]> -- Another construct! Discussed below
anon_2 = 0
anon_3 = 25 -- Armies current world map x position
anon_4 = 20 -- Armies current world map y position
anon_5 = -1
anon_6 = Mission Report: Raid Dreadfought (Set out Spring 23) -- The description of the mission
anon_7 = 0
anon_8 = 23 -- Year
anon_9 = 17790 -- Year tick
anon_10 = vector<int32_t>[0]>
anon_11 = -1
anon_12 = -1
<army_controller_unk60.T_anon_1>
anon_1 = <int32_t[]> -- World map x coordinate of army, gets filled in as the unit moves
anon_2 = <int32_t[]> -- Cooresponding world map y
anon_3 = <int32_t[]> -- Year of the cooresponding move to new x,y
anon_4 = <int32_t[]> -- Year tick to go with the year
anon_5 = 4 -- Number of steps taken
anon_6 = <int32_t[]> -- Looks like it could be the x or y block coordinate of the site explored, but only having one is weird, probably something else
anon_7 = <int32_t[]> -- A list of years the site was explored
anon_8 = <int32_t[]> -- A list of year ticks the site was explored
anon_9 = 0 -- Number of filled in integers in anon_6,7,8
That is as far as I have gotten, I was thinking there would be some df.global.world.missions or something of the sort, so I went through some of the unknowns in world but wasn't able to find anything that would match, except maybe anon_1.
As for my last stuff;
My guess for anon_8,9,10,11 was correct
My guess for anon_5 was not correct, it may instead be the number of known entities?
I think anon_6 is actually the list of currently active missions
Which makes anon_7 the currently highlighted active mission maybe?