C Structs

A collection of C structs for commands and actions.

Sync

16BC41

struct 16bc41 {
  uint32_t network_source_id;
  uint32_t network_dest_id;
  uint8_t command;
  uint8_t option1;
  uint8_t option2;
  uint8_t option3;
  uint32_t individual_counter;
};

16BC31

struct 16bc31 {
  uint32_t network_source_id;
  uint32_t network_dest_id;
  uint8_t command;
  uint8_t option1; // = 0x00
  uint8_t option2; // = 0x00
  uint8_t option3; // = 0x00
  uint32_t time_passed;
};

16BC32

struct 16bc32 {
  uint32_t network_source_id;
  uint32_t network_dest_id;
  uint8_t command;
  uint8_t option1;
  uint8_t option2;
  uint8_t option3;
  uint32_t time_passed;
};

24BC35

Too many unknown bytes.

26BC53

Too many unknown bytes.

32BC44

Too many unknown bytes.

56BC4D

Too many unknown bytes.

24BC51

Too many unknown bytes.

24BC52

Too many unknown bytes.

Actions

00 - Primary Action

struct primary_action {
    uint8_t action_identifier;
    uint8_t player_id;
    uint32_t target_id;
    uint8_t selection_count;
    float x_coord;
    float y_coord;
    uint32_t selected_ids[selection_count];
};

01 - Stop

struct stop {
    uint8_t action_identifier;
    uint8_t selection_count;
    uint32_t selected_ids[selection_count];
};

02 - AI Primary Action

struct ai_primary_action {
    uint8_t action_identifier;
    uint32_t target_id;
    uint8_t selection_count;
    float x_coord;
    float y_coord;
    uint32_t selected_ids[selection_count];
};

03 - Move

struct move {
  	uint8_t action_identifier;
  	uint8_t player_id;
  	uint32_t constant; // = 0xFFFFFFFF
  	uint32_t selection_count;
  	float x_coord;
  	float y_coord;
  	uint32_t selected_ids[selection_count];
};

0a - AI Move

Too many unknown bytes.

0b - Resign

struct resign {
    uint8_t action_identifier;
    uint8_t player_number;
    uint8_t player_id;
    uint32_t disconnect;
};

10 - Waypoint

struct waypoint {
  uint8_t action_identifier;
  uint8_t player_id;
  uint8_t selection_count;
  uint8_t x_coord;
  uint8_t y_coord;
  uint32_t selected_ids[selection_count];
};

12 - Stance

struct stance {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint8_t stance;
  uint32_t selected_ids[selection_count];
};

13 - Guard

struct guard {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint32_t guarded_id;
  uint32_t selected_ids[selection_count];
};

14 - Follow

struct follow {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint32_t followed_id;
  uint32_t selection_ids[selection_count];
};

15 - Patrol

struct patrol {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint8_t patrol_waypoint_count;
  float x_coords[10];
  float y_coords[10];
  uint32_t selection_ids[selection_count];
};

17 - Formation

struct formation {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint8_t player_number;
  uint8_t unknown; // = 0x00
  uint8_t formation_type;
  uint32_t selected_ids[selection_count];
};

1b - Save

Too many unknown bytes.

1f - AI Waypoints

struct ai_waypoints {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint8_t waypoint_count;
  uint32_t selected_ids[selection_count];
  uint8_t x_coords[waypoint_count];
  uint8_t y_coords[waypoint_count];
};

64 - AI Training

struct ai_train {
  uint8_t action_identifier;
  uint32_t building_id;
  uint16_t player_id;
  uint16_t unit_id;
  uint32_t constant; // = 0xFFFFFFFF
};

65 - Research

struct research {
  uint8_t action_identifier;
  uint32_t building_id;
  uint8_t player_number;
  uint16_t technology_id;
  uint32_t constant; // = 0xFFFFFFFF
};

66 - Build

struct build {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint8_t player_number;
  float x_coord;
  float y_coord;
  uint16_t building_id;
  uint32_t constant; // = 0xFFFFFFFF
  uint8_t sprite_id;
  uint32_t selected_ids[selection_count];
};

67 - Multipurpose

Too many unknown bytes.

69 - Build Wall

struct build_wall {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint8_t player_number;
  uint8_t start_x_coord;
  uint8_t start_y_coord;
  uint8_t end_x_coord;
  uint8_t end_y_coord;
  uint16_t building_id;
  uint32_t constant; // = 0xFFFFFFFF
  uint32_t selected_ids[selection_count];
};

6a - Delete

struct delete {
  uint8_t action_identifier;
  uint32_t object_id;
  uint8_t player_number;
};

6b - Attack Ground

struct attack_ground {
	uint8_t action_identifier;
	uint8_t selection_count;
	float x_coord;
	float y_coord;
	uint32_t selected_ids[selection_count];
};

6c - Attack Ground

struct attack_ground {
  uint8_t action_identifier;
  uint8_t source_player_number;
  uint8_t target_player_number;
  uint8_t resource_type;
  float amount;
  float transaction_fee;
};

6e - Repair

struct repair {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint32_t repaired_id;
  uint32_t selected_ids[selection_count];
};

6f - Ungarrison

struct ungarrison {
  uint8_t action_identifier;
  uint8_t selection_count;
  float x_coord;
  float y_coord;
  uint8_t ungarrison_type;
  uint32_t release_id;
  uint32_t selected_ids[selection_count];
};

72 - Toggle Gate

struct toggle_gate {
  uint8_t action_identifier;
  uint32_t gate_id;
};

73 - Flare

struct flare {
  uint8_t action_identifier;
  uint32_t constant; // = 0xFFFFFFFF
  uint8_t receiving[8];
  float x_coord;
  float y_coord;
  uint8_t player_number;
  uint8_t player_id;
};

75 - Garrison

struct garrison {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint32_t building_id;
  uint8_t garrison_type;
  float x_coord;
  float y_coord;
  uint32_t constant; // = 0xFFFFFFFF
  uint32_t selected_ids[selection_count];
};

77 - Training

struct train {
  uint8_t :action_identifier;
  uint32_t :building_id;
  uint16_t :unit_id;
  uint16_t :train_count;
};

78 - Rally Point

struct rally_point {
  uint8_t action_identifier;
  uint8_t selection_count;
  uint32_t target_id;
  uint32_t target_unit_id;
  float x_coord;
  float y_coord;
  uint32_t selected_ids[selection_count];
};

7a - Sell

struct sell {
  uint8_t action_identifier;
  uint8_t player_number;
  uint8_t resource_type;
  uint8_t amount;
  uint32_t market_id;
};

7b - Buy

struct buy {
  uint8_t action_identifier;
  uint8_t player_number;
  uint8_t resource_type;
  uint8_t amount;
  uint32_t market_id;
};

7e - Drop Relic

struct drop_relic {
  uint8_t action_identifier;
  uint32_t monk_id;
};

7f - Townbell

struct townbell {
  uint8_t action_identifier;
  uint32_t building_id;
  uint8_t active;
};

80 - Back to Work

struct back_to_work {
  uint8_t action_identifier;
  uint32_t building_id;
};