Ships
Ships Struct
The static ships struct is at 0x006DD7A0
.
The following fields have been identified:
struct __declspec(align(4)) ships
{
captain *field_0_captains_ptr __tabform(NODUPS);
ship *field_4_ships;
convoy *field_8_convoys;
_DWORD field_C[5];
class49 field_20_class49_array[16];
__int16 field_E0;
unsigned __int16 field_E2_unused_ship_index;
int field_E4;
__int16 field_E8_unknown_ship_id;
__int16 field_EA_ship_index_1;
signed __int16 field_EC;
signed __int16 field_EE;
__int16 field_F0;
unsigned __int16 field_F2_captains_size;
unsigned __int16 field_F4_ships_size;
unsigned __int16 field_F6_convoys_size;
signed __int16 field_F8;
signed __int16 field_FA;
unsigned __int16 field_FC_ship_engagement_range_squared;
signed __int16 field_FE;
int field_100;
int field_104;
};
Ship Struct
The pointer to the ships array is stored in the static ships
struct at offset 0x04
, and the length of that array at offset 0xf4
.
The following fields have been identified:
00000000 struct ship // sizeof=0x180
00000000 {
00000000 unsigned __int8 field_0_merchant_index __tabform(NODUPS);
00000001 char field_1;
00000002 unsigned __int16 field_2;
00000004 unsigned __int16 field_4_next_ship_of_merchant;
00000006 __int16 field_6_next_ship_index_in_convoy;
00000008 unsigned __int16 field_8_convoy_index;
0000000A unsigned __int16 field_A_some_ship_id;
0000000C unsigned __int16 field_C_next_spotted_candidate;
0000000E unsigned __int8 field_E_ship_type;
0000000F unsigned __int8 field_F_maybe_upgrade_level;
00000010 int field_10_capacity;
00000014 int field_14_max_health;
00000018 int field_18_current_health;
0000001C int field_1C_x;
00000020 int field_20_y;
00000024 ship_route *field_24_route_ptr;
00000028 int field_28_x_delta;
0000002C int field_2C_y_delta;
00000030 int field_30;
00000034 signed __int16 field_34;
00000036 char field_36_is_on_route;
00000037 unsigned __int8 field_37_unknown_town_index;
00000038 unsigned __int8 field_38_dest_town_index;
00000039 unsigned __int8 field_39_last_town_index;
0000003A unsigned __int16 field_3A_target_ship_index;
0000003C char field_3C;
0000003D char field_3D;
0000003E signed __int16 field_3E_maintenance;
00000040 unsigned __int16 field_40;
00000042 unsigned __int16 field_42_captain_index;
00000044 int field_44_timestamp2;
00000048 int field_48_maybe_calculated_arrival_timestamp;
0000004C int field_4C_timestamp;
00000050 unsigned __int16 field_50_spotted_ships[2];
00000054 unsigned int field_54_wares[24];
000000B4 float field_B4_avg_prices[24];
00000114 int field_114_payload_buy_sum;
00000118 int field_118_maybe_used_capacity;
0000011C int field_11C_maybe_arty_weight;
00000120 int field_120_arty_stuff;
00000124 int field_124;
00000128 int field_128;
0000012C int field_12C;
00000130 __int16 field_130;
00000132 unsigned __int16 field_132;
00000134 __int16 field_134_status;
00000136 char field_136;
00000137 char field_137;
00000138 unsigned __int16 field_138_docking_counter;
0000013A char field_13A;
0000013B char field_13B;
0000013C char field_13C_artillery[24];
00000154 int field_154;
00000158 int field_158;
0000015C char field_15C_is_pirate;
0000015D unsigned __int8 field_15D;
0000015E __int16 field_15E;
00000160 char field_160_ship_name[32];
00000180 };