Buildings

Research

Used for researching technologies.

Definition

def Research
  int8 :action_identifier
  int24 :zero
  int32 :building_id
  int8 :player_number
  int8 :zero2
  int16 :technology_id
  int32 :const
end

Description

:action_identifier
Always has the value 0x65.

:zero
The 3 bytes after :action_identifier are always zero.

:building_id
The ID of the building where the technology is researched.

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

:zero2
The byte after :player_number is always zero.

:technology_id
The ID of the technology that is researched.

:const
This value is always 0xFFFFFFFF.

Examples

65 00 00 00 63 1a 00 00 01 00 d9 00 ff ff ff ff

65 — action_identifier
00 00 00 — zero
63 1a 00 00 — building_id
01 — player_number
00 — zero2
d9 00 — technology_id
ff ff ff ff — const

Build Action

Used for building everything except walls.

Definition

def Build
  int8 :action_identifier
  int8 :selection_count
  int8 :player_number
  int8 :zero
  float :x_coord
  float :y_coord
  int16 :building_id
  int16 :zero2
  int32 :const
  int8 :sprite_id
  array :selected_ids,
        type => :int32,
        initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x66.

:selection_count
The number of selected units.

:player_number
The number of the player who the building belongs to (0x01 - 0x08).

:zero
The byte after :player_number is always zero.

:x_coord
The x-coordinate of the construction site.

:y_coord
The y-coordinate of the construction site.

:building_id
The UnitID of the building.

:zero2
The two bytes after :building_id are always zero.

:const
This value is always 0xFFFFFFFF.

:sprite_id
Represents which sprite is used for the building (only used for houses, which have several variations per civ).

:selected_ids
The IDs of the selected builders.

Examples

66 02 01 00 00 00 10 43 00 00 88 42 46 00 00 00 ff ff ff ff 02 00 00 00 6e 17 00 00 6c 17 00 00

65 — action_identifier
02 — selection_count
01 — player_number
00 — zero
00 00 10 43 — x_coord
00 00 88 42 — y_coord
46 00 — building_id
00 00 — zero2
ff ff ff ff — const
02 00 00 00 — sprite_id
6e 17 00 00 — selected_id
6c 17 00 00 — selected_id

Build Wall Action

Used for building walls.

Definition

def BuildWall
  int8 :action_identifier
  int8 :selection_count
  int8 :player_number
  int8 :start_x_coord
  int8 :start_y_coord
  int8 :end_x_coord
  int8 :end_y_coord
  int8 :zero
  int16 :building_id
  int16 :zero2
  int32 :const
  array :selected_ids,
        type => :int32,
        initial_length => :selection_count
end

Description

:action_identifier
Always has the value 0x69.

:selection_count
The number of selected units.

:player_number
The number of the player who the wall belongs to (0x01 - 0x08).

:zero
The byte after :player_number is always zero.

:start_x_coord
The x-coordinate of the starting tile of the wall.

:start_y_coord
The y-coordinate of the starting tile of the wall.

:end_x_coord
The x-coordinate of the end tile of the wall.

:end_y_coord
The y-coordinate of the end tile of the wall.

:building_id
The UnitID of the wall.

:zero2
The two bytes after :building_id are always zero.

:const
This value is always 0xFFFFFFFF.

:selected_ids
The IDs of the selected builders.

Examples

69 02 01 a0 4a ac 47 00 48 00 00 00 ff ff ff ff 6c 17 00 00 6e 17 00 00

69 — action_identifier
02 — selection_count
01 — player_number
a0 — start_x_coord
4a — start_y_coord
ac — end_x_coord
47 — end_y_coord
00 — zero
48 00 — building_id
00 00 — zero2
ff ff ff ff — const
6c 17 00 00 — selected_id
6e 17 00 00 — selected_id

Repair

Used for repairing buildings and siege.

Definition

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

Description

:action_identifier
Always has the value 0x6e.

:selection_count
The number of selected units.

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

:repaired_id
The ID of the building or siege that is repaired.

:selected_ids
The IDs of the selected repairmen.

Examples

6e 02 00 00 70 1a 00 00 a0 1a 00 00 9f 1a 00 00

6e — action_identifier
02 — selection_count
00 00 — zero
70 1a 00 00 — repaired_id
a0 1a 00 00 — selected_id
9f 1a 00 00 — selected_id

Toggle Gate

Used for setting a gate to closed/open.

Definition

def ToggleGate
  int8 :action_identifier
  byte24 :zero
  int32 :gate_id
end

Description

:action_identifier
Always has the value 0x72.

:zero
The 3 bytes after :action_identifier are always zero.

:gate_id
The ID of the gate.

Examples

72 00 00 00 bf 1a 00 00

72 — action_identifier
00 00 00 — zero
bf 1a 00 00 — gate_id

Townbell

Used for ringing the town bell.

Definition

def Townbell
  int8 :action_identifier
  byte24 :zero
  int32 :building_id
  int8 :active
  byte24 :zero2
end

Description

:action_identifier
Always has the value 0x7f.

:zero
The 3 bytes after :action_identifier are always zero.

:building_id
The ID of the town center where the bell is rung.

:active
Represents whether the townbell is active (0x01) or not active (0x00).

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

Examples

7f 00 00 00 68 17 00 00 01 00 00 00

7f — action_identifier
00 00 00 — zero
68 17 00 00 — building_id
01 — active
00 00 00 — zero2

Back to Work

Used for sending villagers back to work.

Definition

def BackToWork
  int8 :action_identifier
  byte24 :zero
  int32 :building_id
end

Description

:action_identifier
Always has the value 0x80.

:zero
The 3 bytes after :action_identifier are always zero.

:building_id
The ID of the building from which the villagers are released.

Examples

80 00 00 00 68 17 00 00

80 — action_identifier
00 00 00 — zero
68 17 00 00 — building_id