Unit Interaction - Formation Actions

Stance Action

Used for changing the stance of units.

Definition

def Stance
  int8 :action_identifier
  int8 :selection_count
  int8 :stance
  array :selected_ids,
    type => :int32,
    initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x12.

:selection_count
The number of selected units.

:stance
Represents which stance the units are going to take. AoC supports 4 stances.

Hex Value Stance
0x00 Aggressive
0x01 Defensive
0x02 Stand Ground
0x03 Passive

:selected_ids
The IDs of the selected units.

Examples

12 01 02 4b 15 00 00

12 — action_identifier
01 — selection_count
02 — stance
4b 15 00 00 — selected_id

Guard Action

Used for guarding a unit with others.

Definition

def Guard
  int8 :action_identifier
  int8 :selection_count
  int16 :zero
  int32 :guarded_id
  array :selected_ids,
    type => :int32,
    initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x13.

:selection_count
The number of selected units that are put on guard.

:zero
The two bytes after :selection_count are always zero.

:guarded_id
The ID of the unit that will be guarded.

:selected_ids
The IDs of the guarding units.

Examples

13 03 00 00 41 15 00 00 44 18 00 00 4b 15 00 00 42 18 00 00

13 — action_identifier
03 — selection_count
00 00 — zero
41 15 00 00 — guarded_id
44 18 00 00 — selected_id
4b 15 00 00 — selected_id
42 18 00 00 — selected_id

Follow Action

Used for following a unit.

Definition

def Follow
  int8 :action_identifier
  int8 :selection_count
  int16 :zero
  int32 :followed_id
  array :selection_ids,
    type => :int32,
    initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x14.

:selection_count
Number of selected units.

:zero
The two bytes after :selection_count are always zero.

:followed_id
The ID of the unit that will be followed.

:selection_ids
The IDs of the units that are following the unit with :followed_id.

Examples

14 02 00 00 40 18 00 00 44 18 00 00 42 18 00 00

14 — action_identifier
02 — selection_count
00 00 — zero
40 18 00 00 — followed_id
44 18 00 00 — selected_id
42 18 00 00 — selected_id

Patrol Action

Used for patrolling units.

Definition

def Patrol
  int8 :action_identifier
  int8 :selection_count
  int8 :patrol_waypoint_count
  int8 :zero
  array :x_coords,
    type => :float,
    length => 10
  array :y_coords,
    type => :float,
    length => 10
  array :selection_ids,
    type => :int32,
    initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x15.

:selection_count
Number of selected units.

:patrol_waypoint_count
Number of waypoints set (with SHIFT + Mouse-Button).

:zero
The byte after :patrol_waypoint_count is always zero.

:x_coords
The x-coordinates of the patrol waypoints. Always has a length of 10 which is also the maximum number of patrol waypoints. For every waypoint that is not set, a placeholder value of 0x00000000 is used.

:y_coords
The y-coordinates of the patrol waypoints. Always has a length of 10 which is also the maximum number of patrol waypoints. For every waypoint that is not set, a placeholder value of 0x00000000 is used.

:selection_ids
The IDs of the units that are patrolling.

Examples

0000   15 02 03 00 00 f8 2c 43 55 65 2c 43 00 88 2b 43
0010   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020   00 00 00 00 00 00 00 00 00 00 00 00 55 0d 46 43
0030   00 70 48 43 00 48 45 43 00 00 00 00 00 00 00 00
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050   00 00 00 00 43 18 00 00 40 18 00 00

15 — action_identifier
02 — selection_count
03 — patrol_waypoint_count
00 00 — zero
00 f8 2c 43 — x_coord1
55 65 2c 43 — x_coord2
00 88 2b 43 — x_coord3
00 00 00 00 — x_coord4
00 00 00 00 — x_coord5
00 00 00 00 — x_coord6
00 00 00 00 — x_coord7
00 00 00 00 — x_coord8
00 00 00 00 — x_coord9
00 00 00 00 — x_coord10
55 0d 46 43 — y_coord1
00 70 48 43 — y_coord2
00 48 45 43 — y_coord3
00 00 00 00 — y_coord4
00 00 00 00 — y_coord5
00 00 00 00 — y_coord6
00 00 00 00 — y_coord7
00 00 00 00 — y_coord8
00 00 00 00 — y_coord9
00 00 00 00 — y_coord10
43 18 00 00 — selected_id
40 18 00 00 — selected_id

Formation Action

Used for changing the formation type.

Definition

def Formation
  int8 :action_identifier
  int8 :selection_count
  int8 :player_number
  int8 :zero
  int8 :formation_type
  byte24 :zero2
  array :selected_ids,
    type => :int32,
    initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x17.

:selection_count
The number of selected units.

:player_number
The number of the player for whom the formation is changed (0x01 - 0x08).

:zero
The byte after :player_number is always zero.

:formation_type
The formation type that is selected. AoC supports 4 formation types.

Hex Value Formation
0x02 Line
0x04 Staggered
0x07 Box
0x08 Split

:zero2
The 3 bytes after :formation_type are always zero.

:selected_ids
The IDs of the units whose formation type are changed.

Examples

17 02 02 00 07 00 00 00 40 18 00 00 43 18 00 00

17 — action_identifier
02 — selection_count
02 — player_number
00 — zero
07 — formation_type
00 00 00 — zero2
40 18 00 00 — selected_id
43 18 00 00 — selected_id