View Issue Details

IDProjectCategoryView StatusLast Update
0002326FSSCPmultiplayerpublic2013-01-30 07:19
ReporterFUBAR-BDHR Assigned ToThe_E  
PriorityurgentSeverityminorReproducibilityrandom
Status resolvedResolutionreopened 
Product Version3.6.13 
Target Version3.6.14Fixed in Version3.6.13 
Summary0002326: Assert: hull_pct > 0.0f && hull_pct <= 1.0f in ship.cpp line 8298
DescriptionStandalone again. This one has happened several times now and twice in the last week. Happens at player respawn. Attaching call stack and variables. Will attach log as soon as I get out of the debugger.
TagsNo tags attached.

Relationships

related to 0002783 resolvedGoober5000 Multiplayer respawn code can't keep its ship classes straight 
related to 0002378 resolvedGoober5000 Ships assigned in loadout respawn as default ships. 

Activities

2010-10-14 20:17

 

hull_over_100.txt (111,408 bytes)   
Assert: hull_pct > 0.0f && hull_pct <= 1.0f
File: ship.cpp
Line: 8298

<no module>! KiFastSystemCallRet
<no module>! WaitForSingleObject + 18 bytes
<no module>! SCP_DumpStack + 354 bytes
<no module>! WinAssert + 208 bytes
<no module>! change_ship_type + 396 bytes
<no module>! multi_respawn_common_stuff + 401 bytes
<no module>! multi_respawn_player + 102 bytes
<no module>! multi_respawn_process_packet + 1517 bytes
<no module>! process_packet_normal + 1124 bytes
<no module>! multi_process_bigdata + 288 bytes
<no module>! multi_process_incoming + 393 bytes
<no module>! multi_do_frame + 148 bytes
<no module>! game_do_networking + 120 bytes
<no module>! game_do_state_common + 144 bytes
<no module>! game_do_state + 51 bytes
<no module>! gameseq_process_events + 237 bytes
<no module>! game_main + 782 bytes
<no module>! WinMain + 330 bytes
<no module>! __tmainCRTStartup + 358 bytes
<no module>! WinMainCRTStartup + 15 bytes
<no module>! RegisterWaitForInputIdle + 73 bytes


Stack:

 	fs2_open_3_6_13d_INF_SSE2.exe!debug_int3(char * file=0x00ec860c, int line=902)  Line 764	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!WinAssert(char * text=0x00f003b8, char * filename=0x00efb42a, int linenum=8298)  Line 902 + 0x13 bytes	C++
>	fs2_open_3_6_13d_INF_SSE2.exe!change_ship_type(int n=1, int ship_type=7, int by_sexp=0)  Line 8298 + 0x3a bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!multi_respawn_common_stuff(p_object * pobjp=0x06410040)  Line 353 + 0x25 bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!multi_respawn_player(net_player * pl=0x022bfb48, char cur_primary_bank='', char cur_secondary_bank=0, unsigned char cur_link_status='', unsigned short ship_ets=1092, unsigned short net_sig=0, char * parse_name=0x06410040, vec3d * pos=0x00000000)  Line 380 + 0x9 bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!multi_respawn_process_packet(unsigned char * data=0x022b3338, header * hinfo=0x0012f300)  Line 712 + 0x6d bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!process_packet_normal(unsigned char * data=0x022b3338, header * header_info=0x0012f300)  Line 678 + 0xd bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!multi_process_bigdata(unsigned char * data=0x022b3338, int len=3, net_addr * from_addr=0x022c030c, int reliable=1)  Line 989 + 0xd bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!multi_process_incoming()  Line 1098 + 0x1e bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!multi_do_frame()  Line 1165	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!game_do_networking()  Line 1190	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!game_do_state_common(int state=2, int no_networking=0)  Line 6813	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!game_do_state(int state=2)  Line 6826 + 0xb bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!gameseq_process_events()  Line 405 + 0x14 bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!game_main(char * cmdline=0x0015232f)  Line 7456 + 0x5 bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!WinMain(HINSTANCE__ * hInst=0x00400000, HINSTANCE__ * hPrev=0x00000000, char * szCmdLine=0x0015232f, int nCmdShow=10)  Line 7536 + 0x9 bytes	C++
 	fs2_open_3_6_13d_INF_SSE2.exe!__tmainCRTStartup()  Line 263 + 0x2c bytes	C
 	fs2_open_3_6_13d_INF_SSE2.exe!WinMainCRTStartup()  Line 182	C
 	kernel32.dll!7c817077() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	


Autos:

-		Ship_info	0x01a78248 struct ship_info * Ship_info {name=0x01a78248 "GTF Ulysses" alt_name=0x01a78268 "" short_name=0x01a78288 "TFight" ...}	ship_info [250]
+		[0]	{name=0x01a78248 "GTF Ulysses" alt_name=0x01a78268 "" short_name=0x01a78288 "TFight" ...}	ship_info
-		[1]	{name=0x01a7d26c "GTF Hercules" alt_name=0x01a7d28c "" short_name=0x01a7d2ac "TFight6" ...}	ship_info
+		name	0x01a7d26c "GTF Hercules"	char [32]
+		alt_name	0x01a7d28c ""	char [32]
+		short_name	0x01a7d2ac "TFight6"	char [32]
		species	0	int
		class_type	6	int
+		type_str	0x0339fd78 "Heavy Assault"	char *
+		maneuverability_str	0x0339fdb8 "Poor"	char *
+		armor_str	0x0339fdf0 "Heavy"	char *
+		manufacturer_str	0x0339fe28 "Han-Ronald Corp"	char *
+		desc	0x00000000 <Bad Ptr>	char *
+		tech_desc	0x034bb250 "The old workhorse of the Terran fleet, the Hercules is a beloved but aging design. It was the mainstay of the Terran forces during the Great War, but it is slowly being phased out of the modern fleet. As they are replaced by Herc IIs, Myrmidons, and other recent designs, Hercules fighters are increasingly relegated to training and guard duties far from the front lines. Pilots who've f	char *
+		tech_title	0x01a7d2ec ""	char [32]
+		ship_length	0x034bb4c0 "20 m"	char *
+		gun_mounts	0x034ba898 "2 (4, 2)"	char *
+		missile_banks	0x034ba8d0 "2 (60, 60)"	char *
+		cockpit_pof_file	0x01a7d318 ""	char [32]
+		cockpit_offset	{xyz={...} a1d=0x01a7d338 }	vec3d
+		pof_file	0x01a7d344 "fighter06.pof"	char [32]
+		pof_file_hud	0x01a7d364 ""	char [32]
		num_detail_levels	4	int
+		detail_distance	0x01a7d388	int [5]
		cockpit_model_num	-1	int
		model_num	-1	int
		model_num_hud	-1	int
		hud_target_lod	-1	int
		density	1.0000000	float
		damp	0.20000000	float
		rotdamp	0.34999999	float
		delta_bank_const	0.50000000	float
+		max_vel	{xyz={...} a1d=0x01a7d3bc }	vec3d
+		afterburner_max_vel	{xyz={...} a1d=0x01a7d3c8 }	vec3d
+		max_rotvel	{xyz={...} a1d=0x01a7d3d4 }	vec3d
+		rotation_time	{xyz={...} a1d=0x01a7d3e0 }	vec3d
		srotation_time	4.2500000	float
		max_rear_vel	0.00000000	float
		forward_accel	3.0000000	float
		afterburner_forward_accel	0.69999999	float
		forward_decel	1.5000000	float
		slide_accel	0.00000000	float
		slide_decel	0.00000000	float
+		warpin_anim	0x01a7d408 ""	char [32]
		warpin_radius	0.00000000	float
		warpin_snd_start	-1	int
		warpin_snd_end	-1	int
		warpin_speed	0.00000000	float
		warpin_time	0	int
		warpin_type	0	int
+		warpout_anim	0x01a7d440 ""	char [32]
		warpout_radius	0.00000000	float
		warpout_snd_start	-1	int
		warpout_snd_end	-1	int
		warpout_speed	0.00000000	float
		warpout_time	0	int
		warpout_type	0	int
		warpout_player_speed	0.00000000	float
		flags	1573158	int
		flags2	3	int
		ai_class	3	int
		max_speed	50.000000	float
		min_speed	-0.00000000	float
		max_accel	50.000000	float
		collision_damage_type_idx	-1	int
+		collision_physics	{both_small_bounce=5.0000000 bounce=5.0000000 friction=0.00000000 ...}	ship_collision_physics
+		shockwave	{name=0x01a7d4a8 "" pof_name=0x01a7d4c8 "" inner_rad=25.000000 ...}	shockwave_create_info
		explosion_propagates	0	int
		big_exp_visual_rad	-1.0000000	float
		shockwave_count	1	int
+		explosion_bitmap_anims	{...}	SCP_vector<int>
		vaporize_chance	0.00000000	float
		ispew_max_particles	-1	int
		dspew_max_particles	-1	int
		debris_min_lifetime	-1.0000000	float
		debris_max_lifetime	-1.0000000	float
		debris_min_speed	-1.0000000	float
		debris_max_speed	-1.0000000	float
		debris_min_rotspeed	-1.0000000	float
		debris_max_rotspeed	-1.0000000	float
		debris_damage_type_idx	-1	int
		debris_min_hitpoints	-1.0000000	float
		debris_max_hitpoints	-1.0000000	float
		debris_damage_mult	1.0000000	float
		debris_arc_percent	0.50000000	float
		n_subsystems	5	int
+		subsystems	0x04d8db80 {flags=0 name=0x04d8db84 "��������������������������������sensors" subobj_name=0x04d8dba4 "sensors" ...}	model_subsystem *
		power_output	3.0000000	float
		max_overclocked_speed	64.000000	float
		max_weapon_reserve	150.00000	float
		max_shield_regen_per_second	0.020000000	float
		max_weapon_regen_per_second	0.039999999	float
		afterburner_fuel_capacity	300.00000	float
		afterburner_burn_rate	60.000000	float
		afterburner_recover_rate	25.000000	float
		afterburner_max_reverse_vel	0.00000000	float
		afterburner_reverse_accel	0.00000000	float
		cmeasure_type	80	int
		cmeasure_max	25	int
		num_primary_banks	2	int
		num_secondary_banks	2	int
+		primary_bank_weapons	0x01a7d5a8	int [3]
+		primary_bank_ammo_capacity	0x01a7d5b4	int [3]
+		secondary_bank_weapons	0x01a7d5c0	int [4]
+		secondary_bank_ammo_capacity	0x01a7d5d0	int [4]
		max_hull_strength	250.00000	float
		max_shield_strength	600.00000	float
		hull_repair_rate	0.00000000	float
		subsys_repair_rate	-2.0000000	float
		sup_hull_repair_rate	0.15000001	float
		sup_shield_repair_rate	0.20000000	float
		sup_subsys_repair_rate	0.15000001	float
		engine_snd	126	int
+		closeup_pos	{xyz={...} a1d=0x01a7d600 }	vec3d
		closeup_zoom	0.50000000	float
+		allowed_weapons	0x01a7d610	int [300]
+		restricted_loadout_flag	0x01a7dac0	int [7]
+		allowed_bank_restricted_weapons	0x01a7dadc	int [7][300]
		shield_icon_index	1 ''	unsigned char
+		icon_filename	0x01a7fbad "iconfighter06"	char [32]
+		anim_filename	0x01a7fbcd "ssfighter06"	char [32]
+		overhead_filename	0x01a7fbed "loadfighter06"	char [32]
		score	10	int
		scan_time	2000	int
+		ct_info	0x01a7fc18 {pt={...} w_start=0.25000000 w_end=0.050000001 ...}	trail_info [12]
		ct_count	3	int
		num_nondark_colors	0	int
+		nondark_colors	0x01a7ffb0	unsigned char [10][3]
+		shield_color	0x01a7ffce "dd�"	unsigned char [3]
+		afterburner_trail	{filename=0x01a7ffd4 "ABTrail" bitmap_id=-1 }	generic_bitmap
		afterburner_trail_width_factor	1.0000000	float
		afterburner_trail_alpha_factor	1.0000000	float
		afterburner_trail_life	1.0000000	float
		afterburner_trail_faded_out_sections	0	int
+		normal_thruster_particles	{...}	SCP_vector<thruster_particles>
+		afterburner_thruster_particles	{...}	SCP_vector<thruster_particles>
+		thruster_flame_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_glow_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_secondary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
+		thruster_tertiary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
		thruster01_glow_rad_factor	1.0000000	float
		thruster02_glow_rad_factor	1.0000000	float
		thruster03_glow_rad_factor	1.0000000	float
		thruster02_glow_len_factor	1.0000000	float
		splodeing_texture	-1	int
+		splodeing_texture_name	0x01a8026c "boom"	char [32]
		max_decals	50	int
+		draw_primary_models	0x01a80290	bool [3]
+		draw_secondary_models	0x01a80293	bool [4]
		draw_models	false	bool
		weapon_model_draw_distance	200.00000	float
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int
		can_glide	false	bool
		glide_cap	0.00000000	float
		glide_dynamic_cap	false	bool
		glide_accel_mult	0.00000000	float
		use_newtonian_damp	false	bool
		newtonian_damp_override	false	bool
		autoaim_fov	0.00000000	float
		topdown_offset_def	false	bool
+		topdown_offset	{xyz={...} a1d=0x01a802c0 }	vec3d
		num_maneuvering	0	int
+		maneuvering	0x01a802d0 {use_flags=0 start_snd=-1 loop_snd=-1 ...}	man_thruster [128]
		radar_image_2d_idx	-1	int
		radar_image_size	-1	int
		radar_projection_size_mult	1.0000000	float
+		ship_iff_info	0x01a820dc	int [10][10]
		aiming_flags	0	int
		minimum_convergence_distance	0.00000000	float
		convergence_distance	100.00000	float
+		convergence_offset	{xyz={...} a1d=0x01a82278 }	vec3d
		emp_resistance_mod	0.00000000	float
		piercing_damage_draw_limit	0.10000000	float
		damage_lightning_type	1	int
+		[2]	{name=0x01a82290 "GTF Hercules Mark II" alt_name=0x01a822b0 "" short_name=0x01a822d0 "TFight22" ...}	ship_info
+		[3]	{name=0x01a872b4 "GTF Ares" alt_name=0x01a872d4 "" short_name=0x01a872f4 "TFight6" ...}	ship_info
+		[4]	{name=0x01a8c2d8 "GTF Erinyes" alt_name=0x01a8c2f8 "" short_name=0x01a8c318 "TFight22" ...}	ship_info
+		[5]	{name=0x01a912fc "GTF Loki" alt_name=0x01a9131c "" short_name=0x01a9133c "TFight13" ...}	ship_info
+		[6]	{name=0x01a96320 "GTF Pegasus" alt_name=0x01a96340 "" short_name=0x01a96360 "TFight21" ...}	ship_info
-		[7]	{name=0x01a9b344 "GTF Perseus" alt_name=0x01a9b364 "" short_name=0x01a9b384 "TFight2t-03" ...}	ship_info
+		name	0x01a9b344 "GTF Perseus"	char [32]
+		alt_name	0x01a9b364 ""	char [32]
+		short_name	0x01a9b384 "TFight2t-03"	char [32]
		species	0	int
		class_type	6	int
+		type_str	0x033cc060 "Interceptor"	char *
+		maneuverability_str	0x033cc098 "High"	char *
+		armor_str	0x03362f60 "Average"	char *
+		manufacturer_str	0x03362f98 "Nankam Aeronautical"	char *
+		desc	0x00000000 <Bad Ptr>	char *
+		tech_desc	0x033cff78 "The GTF Perseus is the newest fighter in the GTVA's arsenal. Slated to replace the aging Valkyrie as the Alliance's primary interceptor, the Perseus's high max speed and maneuverability make it ideal to hunt and destroy enemy bombers. Perseus fighters have been assigned to the 3rd Battle Group on a trial basis, with wide deployment expected after the OpEval period. Primary weapons inc	char *
+		tech_title	0x01a9b3c4 ""	char [32]
+		ship_length	0x03362fd8 "17 m"	char *
+		gun_mounts	0x033cc000 "2 (2, 2)"	char *
+		missile_banks	0x034baa90 "2 (40, 40)"	char *
+		cockpit_pof_file	0x01a9b3f0 ""	char [32]
+		cockpit_offset	{xyz={...} a1d=0x01a9b410 }	vec3d
+		pof_file	0x01a9b41c "fighter2t-03.pof"	char [32]
+		pof_file_hud	0x01a9b43c ""	char [32]
		num_detail_levels	4	int
+		detail_distance	0x01a9b460	int [5]
		cockpit_model_num	-1	int
		model_num	48331	int
		model_num_hud	-1	int
		hud_target_lod	-1	int
		density	1.0000000	float
		damp	0.15000001	float
		rotdamp	0.34999999	float
		delta_bank_const	0.50000000	float
+		max_vel	{xyz={...} a1d=0x01a9b494 }	vec3d
+		afterburner_max_vel	{xyz={...} a1d=0x01a9b4a0 }	vec3d
+		max_rotvel	{xyz={...} a1d=0x01a9b4ac }	vec3d
+		rotation_time	{xyz={...} a1d=0x01a9b4b8 }	vec3d
		srotation_time	3.3000000	float
		max_rear_vel	0.00000000	float
		forward_accel	2.0000000	float
		afterburner_forward_accel	0.80000001	float
		forward_decel	1.5000000	float
		slide_accel	0.00000000	float
		slide_decel	0.00000000	float
+		warpin_anim	0x01a9b4e0 ""	char [32]
		warpin_radius	0.00000000	float
		warpin_snd_start	-1	int
		warpin_snd_end	-1	int
		warpin_speed	0.00000000	float
		warpin_time	0	int
		warpin_type	0	int
+		warpout_anim	0x01a9b518 ""	char [32]
		warpout_radius	0.00000000	float
		warpout_snd_start	-1	int
		warpout_snd_end	-1	int
		warpout_speed	0.00000000	float
		warpout_time	0	int
		warpout_type	0	int
		warpout_player_speed	0.00000000	float
		flags	302	int
		flags2	0	int
		ai_class	3	int
		max_speed	80.000000	float
		min_speed	-0.00000000	float
		max_accel	80.000000	float
		collision_damage_type_idx	-1	int
+		collision_physics	{both_small_bounce=5.0000000 bounce=5.0000000 friction=0.00000000 ...}	ship_collision_physics
+		shockwave	{name=0x01a9b580 "" pof_name=0x01a9b5a0 "" inner_rad=25.000000 ...}	shockwave_create_info
		explosion_propagates	0	int
		big_exp_visual_rad	-1.0000000	float
		shockwave_count	1	int
+		explosion_bitmap_anims	{...}	SCP_vector<int>
		vaporize_chance	0.00000000	float
		ispew_max_particles	-1	int
		dspew_max_particles	-1	int
		debris_min_lifetime	-1.0000000	float
		debris_max_lifetime	-1.0000000	float
		debris_min_speed	-1.0000000	float
		debris_max_speed	-1.0000000	float
		debris_min_rotspeed	-1.0000000	float
		debris_max_rotspeed	-1.0000000	float
		debris_damage_type_idx	-1	int
		debris_min_hitpoints	-1.0000000	float
		debris_max_hitpoints	-1.0000000	float
		debris_damage_mult	1.0000000	float
		debris_arc_percent	0.50000000	float
		n_subsystems	5	int
+		subsystems	0x03363010 {flags=0 name=0x03363014 "sensors" subobj_name=0x03363034 "sensors" ...}	model_subsystem *
		power_output	2.0000000	float
		max_overclocked_speed	100.00000	float
		max_weapon_reserve	150.00000	float
		max_shield_regen_per_second	0.020000000	float
		max_weapon_regen_per_second	0.039999999	float
		afterburner_fuel_capacity	330.00000	float
		afterburner_burn_rate	60.000000	float
		afterburner_recover_rate	25.000000	float
		afterburner_max_reverse_vel	0.00000000	float
		afterburner_reverse_accel	0.00000000	float
		cmeasure_type	80	int
		cmeasure_max	40	int
		num_primary_banks	2	int
		num_secondary_banks	2	int
+		primary_bank_weapons	0x01a9b680	int [3]
+		primary_bank_ammo_capacity	0x01a9b68c	int [3]
+		secondary_bank_weapons	0x01a9b698	int [4]
+		secondary_bank_ammo_capacity	0x01a9b6a8	int [4]
		max_hull_strength	265.00000	float
		max_shield_strength	350.00000	float
		hull_repair_rate	0.00000000	float
		subsys_repair_rate	-2.0000000	float
		sup_hull_repair_rate	0.15000001	float
		sup_shield_repair_rate	0.20000000	float
		sup_subsys_repair_rate	0.15000001	float
		engine_snd	126	int
+		closeup_pos	{xyz={...} a1d=0x01a9b6d8 }	vec3d
		closeup_zoom	0.50000000	float
+		allowed_weapons	0x01a9b6e8	int [300]
+		restricted_loadout_flag	0x01a9bb98	int [7]
+		allowed_bank_restricted_weapons	0x01a9bbb4	int [7][300]
		shield_icon_index	7 ''	unsigned char
+		icon_filename	0x01a9dc85 "iconfighter2t-03"	char [32]
+		anim_filename	0x01a9dca5 "ssfighter2t-03"	char [32]
+		overhead_filename	0x01a9dcc5 "loadfighter2t-03"	char [32]
		score	14	int
		scan_time	2000	int
+		ct_info	0x01a9dcf0 {pt={...} w_start=0.25000000 w_end=0.050000001 ...}	trail_info [12]
		ct_count	3	int
		num_nondark_colors	0	int
+		nondark_colors	0x01a9e088	unsigned char [10][3]
+		shield_color	0x01a9e0a6 "dd�"	unsigned char [3]
+		afterburner_trail	{filename=0x01a9e0ac "ABTrail" bitmap_id=0 }	generic_bitmap
		afterburner_trail_width_factor	1.0000000	float
		afterburner_trail_alpha_factor	1.0000000	float
		afterburner_trail_life	1.0000000	float
		afterburner_trail_faded_out_sections	0	int
+		normal_thruster_particles	{...}	SCP_vector<thruster_particles>
+		afterburner_thruster_particles	{...}	SCP_vector<thruster_particles>
+		thruster_flame_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_glow_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_secondary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
+		thruster_tertiary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
		thruster01_glow_rad_factor	1.0000000	float
		thruster02_glow_rad_factor	1.0000000	float
		thruster03_glow_rad_factor	1.0000000	float
		thruster02_glow_len_factor	1.0000000	float
		splodeing_texture	0	int
+		splodeing_texture_name	0x01a9e344 "boom"	char [32]
		max_decals	50	int
+		draw_primary_models	0x01a9e368	bool [3]
+		draw_secondary_models	0x01a9e36b	bool [4]
		draw_models	false	bool
		weapon_model_draw_distance	200.00000	float
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int
		can_glide	false	bool
		glide_cap	0.00000000	float
		glide_dynamic_cap	false	bool
		glide_accel_mult	0.00000000	float
		use_newtonian_damp	false	bool
		newtonian_damp_override	false	bool
		autoaim_fov	0.00000000	float
		topdown_offset_def	false	bool
+		topdown_offset	{xyz={...} a1d=0x01a9e398 }	vec3d
		num_maneuvering	0	int
+		maneuvering	0x01a9e3a8 {use_flags=0 start_snd=-1 loop_snd=-1 ...}	man_thruster [128]
		radar_image_2d_idx	-1	int
		radar_image_size	-1	int
		radar_projection_size_mult	1.0000000	float
+		ship_iff_info	0x01aa01b4	int [10][10]
		aiming_flags	0	int
		minimum_convergence_distance	0.00000000	float
		convergence_distance	100.00000	float
+		convergence_offset	{xyz={...} a1d=0x01aa0350 }	vec3d
		emp_resistance_mod	0.00000000	float
		piercing_damage_draw_limit	0.10000000	float
		damage_lightning_type	1	int
+		[8]	{name=0x01aa0368 "GTF Myrmidon" alt_name=0x01aa0388 "" short_name=0x01aa03a8 "TFight2t-05" ...}	ship_info
+		[9]	{name=0x01aa538c "SF Mara (terrans)" alt_name=0x01aa53ac "" short_name=0x01aa53cc "SFight23" ...}	ship_info
+		[10]	{name=0x01aaa3b0 "GTB Artemis" alt_name=0x01aaa3d0 "" short_name=0x01aaa3f0 "Bomber2T-03" ...}	ship_info
+		[11]	{name=0x01aaf3d4 "GTB Artemis D.H." alt_name=0x01aaf3f4 "" short_name=0x01aaf414 "Bomber2T-03" ...}	ship_info
+		[12]	{name=0x01ab43f8 "GTB Medusa" alt_name=0x01ab4418 "" short_name=0x01ab4438 "TBomb4" ...}	ship_info
+		[13]	{name=0x01ab941c "GTB Ursa" alt_name=0x01ab943c "" short_name=0x01ab945c "TBomb5" ...}	ship_info
+		[14]	{name=0x01abe440 "GTB Zeus" alt_name=0x01abe460 "" short_name=0x01abe480 "TBomb9" ...}	ship_info
+		[15]	{name=0x01ac3464 "GTB Boanerges" alt_name=0x01ac3484 "" short_name=0x01ac34a4 "TBomb21" ...}	ship_info
+		[16]	{name=0x01ac8488 "GTDR Amazon" alt_name=0x01ac84a8 "" short_name=0x01ac84c8 "TDrone" ...}	ship_info
+		[17]	{name=0x01acd4ac "GTDR Amazon Advanced" alt_name=0x01acd4cc "" short_name=0x01acd4ec "TDrone2" ...}	ship_info
+		[18]	{name=0x01ad24d0 "GTS Hygeia" alt_name=0x01ad24f0 "" short_name=0x01ad2510 "TSup" ...}	ship_info
+		[19]	{name=0x01ad74f4 "GTFR Triton" alt_name=0x01ad7514 "" short_name=0x01ad7534 "TFreight2" ...}	ship_info
+		[20]	{name=0x01adc518 "TC-TRI" alt_name=0x01adc538 "" short_name=0x01adc558 "TC-TRI" ...}	ship_info
+		[21]	{name=0x01ae153c "GTFR Poseidon" alt_name=0x01ae155c "" short_name=0x01ae157c "TFreight2" ...}	ship_info
+		[22]	{name=0x01ae6560 "TC 2" alt_name=0x01ae6580 "" short_name=0x01ae65a0 "TCar2" ...}	ship_info
+		[23]	{name=0x01aeb584 "TSC 2" alt_name=0x01aeb5a4 "" short_name=0x01aeb5c4 "TCar2" ...}	ship_info
+		[24]	{name=0x01af05a8 "TAC 1" alt_name=0x01af05c8 "" short_name=0x01af05e8 "TCar3" ...}	ship_info
+		[25]	{name=0x01af55cc "TTC 1" alt_name=0x01af55ec "" short_name=0x01af560c "TTCar" ...}	ship_info
+		[26]	{name=0x01afa5f0 "GTC Fenris" alt_name=0x01afa610 "" short_name=0x01afa630 "TCruise" ...}	ship_info
+		[27]	{name=0x01aff614 "GTM Hippocrates" alt_name=0x01aff634 "" short_name=0x01aff654 "TMedical" ...}	ship_info
+		[28]	{name=0x01b04638 "GTC Leviathan" alt_name=0x01b04658 "" short_name=0x01b04678 "TPiranhaCruise" ...}	ship_info
+		[29]	{name=0x01b0965c "GTSC Faustus" alt_name=0x01b0967c "" short_name=0x01b0969c "TSci1" ...}	ship_info
+		[30]	{name=0x01b0e680 "GTG Zephyrus" alt_name=0x01b0e6a0 "" short_name=0x01b0e6c0 "TGas1" ...}	ship_info
+		[31]	{name=0x01b136a4 "GTA Charybdis" alt_name=0x01b136c4 "" short_name=0x01b136e4 "TAWAC" ...}	ship_info
+		[32]	{name=0x01b186c8 "GTD Orion" alt_name=0x01b186e8 "" short_name=0x01b18708 "TCap" ...}	ship_info
+		[33]	{name=0x01b1d6ec "GTD Hecate" alt_name=0x01b1d70c "" short_name=0x01b1d72c "TCap" ...}	ship_info
+		[34]	{name=0x01b22710 "GTD Orion#2 (Bastion)" alt_name=0x01b22730 "" short_name=0x01b22750 "TCap" ...}	ship_info
+		[35]	{name=0x01b27734 "GTD Hades" alt_name=0x01b27754 "" short_name=0x01b27774 "THades" ...}	ship_info
+		[36]	{name=0x01b2c758 "GTI Arcadia" alt_name=0x01b2c778 "" short_name=0x01b2c798 "TInst" ...}	ship_info
+		[37]	{name=0x01b3177c "GTVA Colossus" alt_name=0x01b3179c "" short_name=0x01b317bc "TSoup" ...}	ship_info
+		[38]	{name=0x01b367a0 "GTCv Deimos" alt_name=0x01b367c0 "" short_name=0x01b367e0 "TCorvette" ...}	ship_info
+		[39]	{name=0x01b3b7c4 "GTC Aeolus" alt_name=0x01b3b7e4 "" short_name=0x01b3b804 "TCruiser" ...}	ship_info
+		[40]	{name=0x01b407e8 "NTF Iceni" alt_name=0x01b40808 "" short_name=0x01b40828 "RCorvette" ...}	ship_info
+		[41]	{name=0x01b4580c "NTF Boadicea" alt_name=0x01b4582c "" short_name=0x01b4584c "RBase" ...}	ship_info
+		[42]	{name=0x01b4a830 "GTT Elysium" alt_name=0x01b4a850 "" short_name=0x01b4a870 "TTran" ...}	ship_info
+		[43]	{name=0x01b4f854 "GTT Argo" alt_name=0x01b4f874 "" short_name=0x01b4f894 "TTran" ...}	ship_info
+		[44]	{name=0x01b54878 "GTNB Pharos" alt_name=0x01b54898 "" short_name=0x01b548b8 "JBuoy" ...}	ship_info
+		[45]	{name=0x01b5989c "GTI Ganymede" alt_name=0x01b598bc "" short_name=0x01b598dc "TInst2" ...}	ship_info
+		[46]	{name=0x01b5e8c0 "Knossos" alt_name=0x01b5e8e0 "" short_name=0x01b5e900 "JumpGate" ...}	ship_info
+		[47]	{name=0x01b638e4 "Asteroid" alt_name=0x01b63904 "" short_name=0x01b63924 "Asteroid" ...}	ship_info
+		[48]	{name=0x01b68908 "GTSG Watchdog" alt_name=0x01b68928 "" short_name=0x01b68948 "TSGun" ...}	ship_info
+		[49]	{name=0x01b6d92c "GTSG Cerberus" alt_name=0x01b6d94c "" short_name=0x01b6d96c "TSGun2" ...}	ship_info
+		[50]	{name=0x01b72950 "GTSG Alastor" alt_name=0x01b72970 "" short_name=0x01b72990 "TSGun3" ...}	ship_info
+		[51]	{name=0x01b77974 "GTEP Hermes" alt_name=0x01b77994 "" short_name=0x01b779b4 "TPod" ...}	ship_info
+		[52]	{name=0x01b7c998 "TC-Meson Bomb" alt_name=0x01b7c9b8 "" short_name=0x01b7c9d8 "TC-MB" ...}	ship_info
+		[53]	{name=0x01b819bc "GVF Seth" alt_name=0x01b819dc "" short_name=0x01b819fc "VFight7" ...}	ship_info
+		[54]	{name=0x01b869e0 "GVF Horus" alt_name=0x01b86a00 "" short_name=0x01b86a20 "VFight8" ...}	ship_info
+		[55]	{name=0x01b8ba04 "GVF Thoth" alt_name=0x01b8ba24 "" short_name=0x01b8ba44 "VFight9" ...}	ship_info
+		[56]	{name=0x01b90a28 "GVF Serapis" alt_name=0x01b90a48 "" short_name=0x01b90a68 "VFight21" ...}	ship_info
+		[57]	{name=0x01b95a4c "GVF Tauret" alt_name=0x01b95a6c "" short_name=0x01b95a8c "VFight22" ...}	ship_info
+		[58]	{name=0x01b9aa70 "GVB Sekhmet" alt_name=0x01b9aa90 "" short_name=0x01b9aab0 "VBomb21" ...}	ship_info
+		[59]	{name=0x01b9fa94 "GVB Osiris" alt_name=0x01b9fab4 "" short_name=0x01b9fad4 "VBomb6" ...}	ship_info
+		[60]	{name=0x01ba4ab8 "GVB Bakha" alt_name=0x01ba4ad8 "" short_name=0x01ba4af8 "VBomb21" ...}	ship_info
+		[61]	{name=0x01ba9adc "GVF Ptah" alt_name=0x01ba9afc "" short_name=0x01ba9b1c "Vfight22" ...}	ship_info
+		[62]	{name=0x01baeb00 "GVS Nephthys" alt_name=0x01baeb20 "" short_name=0x01baeb40 "VSup" ...}	ship_info
+		[63]	{name=0x01bb3b24 "GVT Isis" alt_name=0x01bb3b44 "" short_name=0x01bb3b64 "VTran" ...}	ship_info
+		[64]	{name=0x01bb8b48 "PVFR Ma'at" alt_name=0x01bb8b68 "" short_name=0x01bb8b88 "VFreight5" ...}	ship_info
+		[65]	{name=0x01bbdb6c "GVFr Bes" alt_name=0x01bbdb8c "" short_name=0x01bbdbac "VFreight5" ...}	ship_info
+		[66]	{name=0x01bc2b90 "VAC 5" alt_name=0x01bc2bb0 "" short_name=0x01bc2bd0 "VCar5" ...}	ship_info
+		[67]	{name=0x01bc7bb4 "VAC 4" alt_name=0x01bc7bd4 "" short_name=0x01bc7bf4 "VCar5" ...}	ship_info
+		[68]	{name=0x01bccbd8 "GVFr Satis" alt_name=0x01bccbf8 "" short_name=0x01bccc18 "VFreight4" ...}	ship_info
+		[69]	{name=0x01bd1bfc "GVG Anuket" alt_name=0x01bd1c1c "" short_name=0x01bd1c3c "VGas1" ...}	ship_info
+		[70]	{name=0x01bd6c20 "GVC Aten" alt_name=0x01bd6c40 "" short_name=0x01bd6c60 "VCruise2" ...}	ship_info
+		[71]	{name=0x01bdbc44 "GVC Mentu" alt_name=0x01bdbc64 "" short_name=0x01bdbc84 "VCruise21" ...}	ship_info
+		[72]	{name=0x01be0c68 "GVCv Sobek" alt_name=0x01be0c88 "" short_name=0x01be0ca8 "VCorvette" ...}	ship_info
+		[73]	{name=0x01be5c8c "GVD Typhon" alt_name=0x01be5cac "" short_name=0x01be5ccc "VDestroy" ...}	ship_info
+		[74]	{name=0x01beacb0 "GVSG Ankh" alt_name=0x01beacd0 "" short_name=0x01beacf0 "VSGun" ...}	ship_info
+		[75]	{name=0x01befcd4 "GVSG Edjo" alt_name=0x01befcf4 "" short_name=0x01befd14 "VSGun2" ...}	ship_info
+		[76]	{name=0x01bf4cf8 "GVEP Ra" alt_name=0x01bf4d18 "" short_name=0x01bf4d38 "VPod" ...}	ship_info
+		[77]	{name=0x01bf9d1c "GVA Setekh" alt_name=0x01bf9d3c "" short_name=0x01bf9d5c "VAWAC" ...}	ship_info
+		[78]	{name=0x01bfed40 "GVD Hatshepsut" alt_name=0x01bfed60 "" short_name=0x01bfed80 "VDestroy" ...}	ship_info
+		[79]	{name=0x01c03d64 "SF Dragon" alt_name=0x01c03d84 "" short_name=0x01c03da4 "SFight" ...}	ship_info
+		[80]	{name=0x01c08d88 "SF Basilisk" alt_name=0x01c08da8 "" short_name=0x01c08dc8 "SFight10" ...}	ship_info
+		[81]	{name=0x01c0ddac "SF Manticore" alt_name=0x01c0ddcc "" short_name=0x01c0ddec "SFight11" ...}	ship_info
+		[82]	{name=0x01c12dd0 "SF Aeshma" alt_name=0x01c12df0 "" short_name=0x01c12e10 "SFight21" ...}	ship_info
+		[83]	{name=0x01c17df4 "SF Mara" alt_name=0x01c17e14 "" short_name=0x01c17e34 "SFight22" ...}	ship_info
+		[84]	{name=0x01c1ce18 "SF Astaroth" alt_name=0x01c1ce38 "" short_name=0x01c1ce58 "SFight23" ...}	ship_info
+		[85]	{name=0x01c21e3c "SB Nephilim" alt_name=0x01c21e5c "" short_name=0x01c21e7c "SBomb8" ...}	ship_info
+		[86]	{name=0x01c26e60 "SB Taurvi" alt_name=0x01c26e80 "" short_name=0x01c26ea0 "SBomb8" ...}	ship_info
+		[87]	{name=0x01c2be84 "SB Nahema" alt_name=0x01c2bea4 "" short_name=0x01c2bec4 "SBomb8" ...}	ship_info
+		[88]	{name=0x01c30ea8 "SB Seraphim" alt_name=0x01c30ec8 "" short_name=0x01c30ee8 "SBomb10" ...}	ship_info
+		[89]	{name=0x01c35ecc "ST Azrael" alt_name=0x01c35eec "" short_name=0x01c35f0c "STran3" ...}	ship_info
+		[90]	{name=0x01c3aef0 "SFr Dis" alt_name=0x01c3af10 "" short_name=0x01c3af30 "SFreight6" ...}	ship_info
+		[91]	{name=0x01c3ff14 "SAC 3" alt_name=0x01c3ff34 "" short_name=0x01c3ff54 "SCar6" ...}	ship_info
+		[92]	{name=0x01c44f38 "SFr Mephisto" alt_name=0x01c44f58 "" short_name=0x01c44f78 "SFreight6" ...}	ship_info
+		[93]	{name=0x01c49f5c "SC 5" alt_name=0x01c49f7c "" short_name=0x01c49f9c "SCar6" ...}	ship_info
+		[94]	{name=0x01c4ef80 "SFr Asmodeus" alt_name=0x01c4efa0 "" short_name=0x01c4efc0 "SFreight7" ...}	ship_info
+		[95]	{name=0x01c53fa4 "SAC 2" alt_name=0x01c53fc4 "" short_name=0x01c53fe4 "SCar7" ...}	ship_info
+		[96]	{name=0x01c58fc8 "SC Lilith" alt_name=0x01c58fe8 "" short_name=0x01c59008 "TCruise3" ...}	ship_info
+		[97]	{name=0x01c5dfec "SC Rakshasa" alt_name=0x01c5e00c "" short_name=0x01c5e02c "SCruise4" ...}	ship_info
+		[98]	{name=0x01c63010 "SC Cain" alt_name=0x01c63030 "" short_name=0x01c63050 "TStrCruise" ...}	ship_info
+		[99]	{name=0x01c68034 "SD Demon" alt_name=0x01c68054 "" short_name=0x01c68074 "SDestroyer" ...}	ship_info
+		[100]	{name=0x01c6d058 "SD Ravana" alt_name=0x01c6d078 "" short_name=0x01c6d098 "SDestroyer" ...}	ship_info
+		[101]	{name=0x01c7207c "SD Lucifer" alt_name=0x01c7209c "" short_name=0x01c720bc "SSuperD" ...}	ship_info
+		[102]	{name=0x01c770a0 "SSG Trident" alt_name=0x01c770c0 "" short_name=0x01c770e0 "SSGun" ...}	ship_info
+		[103]	{name=0x01c7c0c4 "SSG Belial" alt_name=0x01c7c0e4 "" short_name=0x01c7c104 "SSGun2" ...}	ship_info
+		[104]	{name=0x01c810e8 "SSG Rahu" alt_name=0x01c81108 "" short_name=0x01c81128 "SGas1" ...}	ship_info
+		[105]	{name=0x01c8610c "SCv Moloch" alt_name=0x01c8612c "" short_name=0x01c8614c "SCorvette" ...}	ship_info
+		[106]	{name=0x01c8b130 "SJ Sathanas" alt_name=0x01c8b150 "" short_name=0x01c8b170 "SDev" ...}	ship_info
+		[107]	{name=0x01c90154 "SJD Sathanas" alt_name=0x01c90174 "" short_name=0x01c90194 "SDev" ...}	ship_info
+		[108]	{name=0x01c95178 "SpaceHunk" alt_name=0x01c95198 "" short_name=0x01c951b8 "SDev" ...}	ship_info
+		[109]	{name=0x01c9a19c "GTSG Mjolnir" alt_name=0x01c9a1bc "" short_name=0x01c9a1dc "Mjolnir" ...}	ship_info
+		[110]	{name=0x01c9f1c0 "GTSG Mjolnir#home" alt_name=0x01c9f1e0 "" short_name=0x01c9f200 "Mjolnir" ...}	ship_info
+		[111]	{name=0x01ca41e4 "Shivan Comm Node" alt_name=0x01ca4204 "" short_name=0x01ca4224 "CommSat" ...}	ship_info
+		[112]	{name=0x01ca9208 "Volition Bravos" alt_name=0x01ca9228 "" short_name=0x01ca9248 "VPirate" ...}	ship_info
+		[113]	{name=0x01cae22c "" alt_name=0x01cae24c "" short_name=0x01cae26c "" ...}	ship_info
+		[114]	{name=0x01cb3250 "" alt_name=0x01cb3270 "" short_name=0x01cb3290 "" ...}	ship_info
+		[115]	{name=0x01cb8274 "" alt_name=0x01cb8294 "" short_name=0x01cb82b4 "" ...}	ship_info
+		[116]	{name=0x01cbd298 "" alt_name=0x01cbd2b8 "" short_name=0x01cbd2d8 "" ...}	ship_info
+		[117]	{name=0x01cc22bc "" alt_name=0x01cc22dc "" short_name=0x01cc22fc "" ...}	ship_info
+		[118]	{name=0x01cc72e0 "" alt_name=0x01cc7300 "" short_name=0x01cc7320 "" ...}	ship_info
+		[119]	{name=0x01ccc304 "" alt_name=0x01ccc324 "" short_name=0x01ccc344 "" ...}	ship_info
+		[120]	{name=0x01cd1328 "" alt_name=0x01cd1348 "" short_name=0x01cd1368 "" ...}	ship_info
+		[121]	{name=0x01cd634c "" alt_name=0x01cd636c "" short_name=0x01cd638c "" ...}	ship_info
+		[122]	{name=0x01cdb370 "" alt_name=0x01cdb390 "" short_name=0x01cdb3b0 "" ...}	ship_info
+		[123]	{name=0x01ce0394 "" alt_name=0x01ce03b4 "" short_name=0x01ce03d4 "" ...}	ship_info
+		[124]	{name=0x01ce53b8 "" alt_name=0x01ce53d8 "" short_name=0x01ce53f8 "" ...}	ship_info
+		[125]	{name=0x01cea3dc "" alt_name=0x01cea3fc "" short_name=0x01cea41c "" ...}	ship_info
+		[126]	{name=0x01cef400 "" alt_name=0x01cef420 "" short_name=0x01cef440 "" ...}	ship_info
+		[127]	{name=0x01cf4424 "" alt_name=0x01cf4444 "" short_name=0x01cf4464 "" ...}	ship_info
+		[128]	{name=0x01cf9448 "" alt_name=0x01cf9468 "" short_name=0x01cf9488 "" ...}	ship_info
+		[129]	{name=0x01cfe46c "" alt_name=0x01cfe48c "" short_name=0x01cfe4ac "" ...}	ship_info
+		[130]	{name=0x01d03490 "" alt_name=0x01d034b0 "" short_name=0x01d034d0 "" ...}	ship_info
+		[131]	{name=0x01d084b4 "" alt_name=0x01d084d4 "" short_name=0x01d084f4 "" ...}	ship_info
+		[132]	{name=0x01d0d4d8 "" alt_name=0x01d0d4f8 "" short_name=0x01d0d518 "" ...}	ship_info
+		[133]	{name=0x01d124fc "" alt_name=0x01d1251c "" short_name=0x01d1253c "" ...}	ship_info
+		[134]	{name=0x01d17520 "" alt_name=0x01d17540 "" short_name=0x01d17560 "" ...}	ship_info
+		[135]	{name=0x01d1c544 "" alt_name=0x01d1c564 "" short_name=0x01d1c584 "" ...}	ship_info
+		[136]	{name=0x01d21568 "" alt_name=0x01d21588 "" short_name=0x01d215a8 "" ...}	ship_info
+		[137]	{name=0x01d2658c "" alt_name=0x01d265ac "" short_name=0x01d265cc "" ...}	ship_info
+		[138]	{name=0x01d2b5b0 "" alt_name=0x01d2b5d0 "" short_name=0x01d2b5f0 "" ...}	ship_info
+		[139]	{name=0x01d305d4 "" alt_name=0x01d305f4 "" short_name=0x01d30614 "" ...}	ship_info
+		[140]	{name=0x01d355f8 "" alt_name=0x01d35618 "" short_name=0x01d35638 "" ...}	ship_info
+		[141]	{name=0x01d3a61c "" alt_name=0x01d3a63c "" short_name=0x01d3a65c "" ...}	ship_info
+		[142]	{name=0x01d3f640 "" alt_name=0x01d3f660 "" short_name=0x01d3f680 "" ...}	ship_info
+		[143]	{name=0x01d44664 "" alt_name=0x01d44684 "" short_name=0x01d446a4 "" ...}	ship_info
+		[144]	{name=0x01d49688 "" alt_name=0x01d496a8 "" short_name=0x01d496c8 "" ...}	ship_info
+		[145]	{name=0x01d4e6ac "" alt_name=0x01d4e6cc "" short_name=0x01d4e6ec "" ...}	ship_info
+		[146]	{name=0x01d536d0 "" alt_name=0x01d536f0 "" short_name=0x01d53710 "" ...}	ship_info
+		[147]	{name=0x01d586f4 "" alt_name=0x01d58714 "" short_name=0x01d58734 "" ...}	ship_info
+		[148]	{name=0x01d5d718 "" alt_name=0x01d5d738 "" short_name=0x01d5d758 "" ...}	ship_info
+		[149]	{name=0x01d6273c "" alt_name=0x01d6275c "" short_name=0x01d6277c "" ...}	ship_info
+		[150]	{name=0x01d67760 "" alt_name=0x01d67780 "" short_name=0x01d677a0 "" ...}	ship_info
+		[151]	{name=0x01d6c784 "" alt_name=0x01d6c7a4 "" short_name=0x01d6c7c4 "" ...}	ship_info
+		[152]	{name=0x01d717a8 "" alt_name=0x01d717c8 "" short_name=0x01d717e8 "" ...}	ship_info
+		[153]	{name=0x01d767cc "" alt_name=0x01d767ec "" short_name=0x01d7680c "" ...}	ship_info
+		[154]	{name=0x01d7b7f0 "" alt_name=0x01d7b810 "" short_name=0x01d7b830 "" ...}	ship_info
+		[155]	{name=0x01d80814 "" alt_name=0x01d80834 "" short_name=0x01d80854 "" ...}	ship_info
+		[156]	{name=0x01d85838 "" alt_name=0x01d85858 "" short_name=0x01d85878 "" ...}	ship_info
+		[157]	{name=0x01d8a85c "" alt_name=0x01d8a87c "" short_name=0x01d8a89c "" ...}	ship_info
+		[158]	{name=0x01d8f880 "" alt_name=0x01d8f8a0 "" short_name=0x01d8f8c0 "" ...}	ship_info
+		[159]	{name=0x01d948a4 "" alt_name=0x01d948c4 "" short_name=0x01d948e4 "" ...}	ship_info
+		[160]	{name=0x01d998c8 "" alt_name=0x01d998e8 "" short_name=0x01d99908 "" ...}	ship_info
+		[161]	{name=0x01d9e8ec "" alt_name=0x01d9e90c "" short_name=0x01d9e92c "" ...}	ship_info
+		[162]	{name=0x01da3910 "" alt_name=0x01da3930 "" short_name=0x01da3950 "" ...}	ship_info
+		[163]	{name=0x01da8934 "" alt_name=0x01da8954 "" short_name=0x01da8974 "" ...}	ship_info
+		[164]	{name=0x01dad958 "" alt_name=0x01dad978 "" short_name=0x01dad998 "" ...}	ship_info
+		[165]	{name=0x01db297c "" alt_name=0x01db299c "" short_name=0x01db29bc "" ...}	ship_info
+		[166]	{name=0x01db79a0 "" alt_name=0x01db79c0 "" short_name=0x01db79e0 "" ...}	ship_info
+		[167]	{name=0x01dbc9c4 "" alt_name=0x01dbc9e4 "" short_name=0x01dbca04 "" ...}	ship_info
+		[168]	{name=0x01dc19e8 "" alt_name=0x01dc1a08 "" short_name=0x01dc1a28 "" ...}	ship_info
+		[169]	{name=0x01dc6a0c "" alt_name=0x01dc6a2c "" short_name=0x01dc6a4c "" ...}	ship_info
+		[170]	{name=0x01dcba30 "" alt_name=0x01dcba50 "" short_name=0x01dcba70 "" ...}	ship_info
+		[171]	{name=0x01dd0a54 "" alt_name=0x01dd0a74 "" short_name=0x01dd0a94 "" ...}	ship_info
+		[172]	{name=0x01dd5a78 "" alt_name=0x01dd5a98 "" short_name=0x01dd5ab8 "" ...}	ship_info
+		[173]	{name=0x01ddaa9c "" alt_name=0x01ddaabc "" short_name=0x01ddaadc "" ...}	ship_info
+		[174]	{name=0x01ddfac0 "" alt_name=0x01ddfae0 "" short_name=0x01ddfb00 "" ...}	ship_info
+		[175]	{name=0x01de4ae4 "" alt_name=0x01de4b04 "" short_name=0x01de4b24 "" ...}	ship_info
+		[176]	{name=0x01de9b08 "" alt_name=0x01de9b28 "" short_name=0x01de9b48 "" ...}	ship_info
+		[177]	{name=0x01deeb2c "" alt_name=0x01deeb4c "" short_name=0x01deeb6c "" ...}	ship_info
+		[178]	{name=0x01df3b50 "" alt_name=0x01df3b70 "" short_name=0x01df3b90 "" ...}	ship_info
+		[179]	{name=0x01df8b74 "" alt_name=0x01df8b94 "" short_name=0x01df8bb4 "" ...}	ship_info
+		[180]	{name=0x01dfdb98 "" alt_name=0x01dfdbb8 "" short_name=0x01dfdbd8 "" ...}	ship_info
+		[181]	{name=0x01e02bbc "" alt_name=0x01e02bdc "" short_name=0x01e02bfc "" ...}	ship_info
+		[182]	{name=0x01e07be0 "" alt_name=0x01e07c00 "" short_name=0x01e07c20 "" ...}	ship_info
+		[183]	{name=0x01e0cc04 "" alt_name=0x01e0cc24 "" short_name=0x01e0cc44 "" ...}	ship_info
+		[184]	{name=0x01e11c28 "" alt_name=0x01e11c48 "" short_name=0x01e11c68 "" ...}	ship_info
+		[185]	{name=0x01e16c4c "" alt_name=0x01e16c6c "" short_name=0x01e16c8c "" ...}	ship_info
+		[186]	{name=0x01e1bc70 "" alt_name=0x01e1bc90 "" short_name=0x01e1bcb0 "" ...}	ship_info
+		[187]	{name=0x01e20c94 "" alt_name=0x01e20cb4 "" short_name=0x01e20cd4 "" ...}	ship_info
+		[188]	{name=0x01e25cb8 "" alt_name=0x01e25cd8 "" short_name=0x01e25cf8 "" ...}	ship_info
+		[189]	{name=0x01e2acdc "" alt_name=0x01e2acfc "" short_name=0x01e2ad1c "" ...}	ship_info
+		[190]	{name=0x01e2fd00 "" alt_name=0x01e2fd20 "" short_name=0x01e2fd40 "" ...}	ship_info
+		[191]	{name=0x01e34d24 "" alt_name=0x01e34d44 "" short_name=0x01e34d64 "" ...}	ship_info
+		[192]	{name=0x01e39d48 "" alt_name=0x01e39d68 "" short_name=0x01e39d88 "" ...}	ship_info
+		[193]	{name=0x01e3ed6c "" alt_name=0x01e3ed8c "" short_name=0x01e3edac "" ...}	ship_info
+		[194]	{name=0x01e43d90 "" alt_name=0x01e43db0 "" short_name=0x01e43dd0 "" ...}	ship_info
+		[195]	{name=0x01e48db4 "" alt_name=0x01e48dd4 "" short_name=0x01e48df4 "" ...}	ship_info
+		[196]	{name=0x01e4ddd8 "" alt_name=0x01e4ddf8 "" short_name=0x01e4de18 "" ...}	ship_info
+		[197]	{name=0x01e52dfc "" alt_name=0x01e52e1c "" short_name=0x01e52e3c "" ...}	ship_info
+		[198]	{name=0x01e57e20 "" alt_name=0x01e57e40 "" short_name=0x01e57e60 "" ...}	ship_info
+		[199]	{name=0x01e5ce44 "" alt_name=0x01e5ce64 "" short_name=0x01e5ce84 "" ...}	ship_info
+		[200]	{name=0x01e61e68 "" alt_name=0x01e61e88 "" short_name=0x01e61ea8 "" ...}	ship_info
+		[201]	{name=0x01e66e8c "" alt_name=0x01e66eac "" short_name=0x01e66ecc "" ...}	ship_info
+		[202]	{name=0x01e6beb0 "" alt_name=0x01e6bed0 "" short_name=0x01e6bef0 "" ...}	ship_info
+		[203]	{name=0x01e70ed4 "" alt_name=0x01e70ef4 "" short_name=0x01e70f14 "" ...}	ship_info
+		[204]	{name=0x01e75ef8 "" alt_name=0x01e75f18 "" short_name=0x01e75f38 "" ...}	ship_info
+		[205]	{name=0x01e7af1c "" alt_name=0x01e7af3c "" short_name=0x01e7af5c "" ...}	ship_info
+		[206]	{name=0x01e7ff40 "" alt_name=0x01e7ff60 "" short_name=0x01e7ff80 "" ...}	ship_info
+		[207]	{name=0x01e84f64 "" alt_name=0x01e84f84 "" short_name=0x01e84fa4 "" ...}	ship_info
+		[208]	{name=0x01e89f88 "" alt_name=0x01e89fa8 "" short_name=0x01e89fc8 "" ...}	ship_info
+		[209]	{name=0x01e8efac "" alt_name=0x01e8efcc "" short_name=0x01e8efec "" ...}	ship_info
+		[210]	{name=0x01e93fd0 "" alt_name=0x01e93ff0 "" short_name=0x01e94010 "" ...}	ship_info
+		[211]	{name=0x01e98ff4 "" alt_name=0x01e99014 "" short_name=0x01e99034 "" ...}	ship_info
+		[212]	{name=0x01e9e018 "" alt_name=0x01e9e038 "" short_name=0x01e9e058 "" ...}	ship_info
+		[213]	{name=0x01ea303c "" alt_name=0x01ea305c "" short_name=0x01ea307c "" ...}	ship_info
+		[214]	{name=0x01ea8060 "" alt_name=0x01ea8080 "" short_name=0x01ea80a0 "" ...}	ship_info
+		[215]	{name=0x01ead084 "" alt_name=0x01ead0a4 "" short_name=0x01ead0c4 "" ...}	ship_info
+		[216]	{name=0x01eb20a8 "" alt_name=0x01eb20c8 "" short_name=0x01eb20e8 "" ...}	ship_info
+		[217]	{name=0x01eb70cc "" alt_name=0x01eb70ec "" short_name=0x01eb710c "" ...}	ship_info
+		[218]	{name=0x01ebc0f0 "" alt_name=0x01ebc110 "" short_name=0x01ebc130 "" ...}	ship_info
+		[219]	{name=0x01ec1114 "" alt_name=0x01ec1134 "" short_name=0x01ec1154 "" ...}	ship_info
+		[220]	{name=0x01ec6138 "" alt_name=0x01ec6158 "" short_name=0x01ec6178 "" ...}	ship_info
+		[221]	{name=0x01ecb15c "" alt_name=0x01ecb17c "" short_name=0x01ecb19c "" ...}	ship_info
+		[222]	{name=0x01ed0180 "" alt_name=0x01ed01a0 "" short_name=0x01ed01c0 "" ...}	ship_info
+		[223]	{name=0x01ed51a4 "" alt_name=0x01ed51c4 "" short_name=0x01ed51e4 "" ...}	ship_info
+		[224]	{name=0x01eda1c8 "" alt_name=0x01eda1e8 "" short_name=0x01eda208 "" ...}	ship_info
+		[225]	{name=0x01edf1ec "" alt_name=0x01edf20c "" short_name=0x01edf22c "" ...}	ship_info
+		[226]	{name=0x01ee4210 "" alt_name=0x01ee4230 "" short_name=0x01ee4250 "" ...}	ship_info
+		[227]	{name=0x01ee9234 "" alt_name=0x01ee9254 "" short_name=0x01ee9274 "" ...}	ship_info
+		[228]	{name=0x01eee258 "" alt_name=0x01eee278 "" short_name=0x01eee298 "" ...}	ship_info
+		[229]	{name=0x01ef327c "" alt_name=0x01ef329c "" short_name=0x01ef32bc "" ...}	ship_info
+		[230]	{name=0x01ef82a0 "" alt_name=0x01ef82c0 "" short_name=0x01ef82e0 "" ...}	ship_info
+		[231]	{name=0x01efd2c4 "" alt_name=0x01efd2e4 "" short_name=0x01efd304 "" ...}	ship_info
+		[232]	{name=0x01f022e8 "" alt_name=0x01f02308 "" short_name=0x01f02328 "" ...}	ship_info
+		[233]	{name=0x01f0730c "" alt_name=0x01f0732c "" short_name=0x01f0734c "" ...}	ship_info
+		[234]	{name=0x01f0c330 "" alt_name=0x01f0c350 "" short_name=0x01f0c370 "" ...}	ship_info
+		[235]	{name=0x01f11354 "" alt_name=0x01f11374 "" short_name=0x01f11394 "" ...}	ship_info
+		[236]	{name=0x01f16378 "" alt_name=0x01f16398 "" short_name=0x01f163b8 "" ...}	ship_info
+		[237]	{name=0x01f1b39c "" alt_name=0x01f1b3bc "" short_name=0x01f1b3dc "" ...}	ship_info
+		[238]	{name=0x01f203c0 "" alt_name=0x01f203e0 "" short_name=0x01f20400 "" ...}	ship_info
+		[239]	{name=0x01f253e4 "" alt_name=0x01f25404 "" short_name=0x01f25424 "" ...}	ship_info
+		[240]	{name=0x01f2a408 "" alt_name=0x01f2a428 "" short_name=0x01f2a448 "" ...}	ship_info
+		[241]	{name=0x01f2f42c "" alt_name=0x01f2f44c "" short_name=0x01f2f46c "" ...}	ship_info
+		[242]	{name=0x01f34450 "" alt_name=0x01f34470 "" short_name=0x01f34490 "" ...}	ship_info
+		[243]	{name=0x01f39474 "" alt_name=0x01f39494 "" short_name=0x01f394b4 "" ...}	ship_info
+		[244]	{name=0x01f3e498 "" alt_name=0x01f3e4b8 "" short_name=0x01f3e4d8 "" ...}	ship_info
+		[245]	{name=0x01f434bc "" alt_name=0x01f434dc "" short_name=0x01f434fc "" ...}	ship_info
+		[246]	{name=0x01f484e0 "" alt_name=0x01f48500 "" short_name=0x01f48520 "" ...}	ship_info
+		[247]	{name=0x01f4d504 "" alt_name=0x01f4d524 "" short_name=0x01f4d544 "" ...}	ship_info
+		[248]	{name=0x01f52528 "" alt_name=0x01f52548 "" short_name=0x01f52568 "" ...}	ship_info
+		[249]	{name=0x01f5754c "" alt_name=0x01f5756c "" short_name=0x01f5758c "" ...}	ship_info
-		Ship_info[sp->ship_info_index]	{name=0x01a9b344 "GTF Perseus" alt_name=0x01a9b364 "" short_name=0x01a9b384 "TFight2t-03" ...}	ship_info
+		name	0x01a9b344 "GTF Perseus"	char [32]
+		alt_name	0x01a9b364 ""	char [32]
+		short_name	0x01a9b384 "TFight2t-03"	char [32]
		species	0	int
		class_type	6	int
+		type_str	0x033cc060 "Interceptor"	char *
+		maneuverability_str	0x033cc098 "High"	char *
+		armor_str	0x03362f60 "Average"	char *
+		manufacturer_str	0x03362f98 "Nankam Aeronautical"	char *
+		desc	0x00000000 <Bad Ptr>	char *
+		tech_desc	0x033cff78 "The GTF Perseus is the newest fighter in the GTVA's arsenal. Slated to replace the aging Valkyrie as the Alliance's primary interceptor, the Perseus's high max speed and maneuverability make it ideal to hunt and destroy enemy bombers. Perseus fighters have been assigned to the 3rd Battle Group on a trial basis, with wide deployment expected after the OpEval period. Primary weapons inc	char *
+		tech_title	0x01a9b3c4 ""	char [32]
+		ship_length	0x03362fd8 "17 m"	char *
+		gun_mounts	0x033cc000 "2 (2, 2)"	char *
+		missile_banks	0x034baa90 "2 (40, 40)"	char *
+		cockpit_pof_file	0x01a9b3f0 ""	char [32]
+		cockpit_offset	{xyz={...} a1d=0x01a9b410 }	vec3d
+		pof_file	0x01a9b41c "fighter2t-03.pof"	char [32]
+		pof_file_hud	0x01a9b43c ""	char [32]
		num_detail_levels	4	int
+		detail_distance	0x01a9b460	int [5]
		cockpit_model_num	-1	int
		model_num	48331	int
		model_num_hud	-1	int
		hud_target_lod	-1	int
		density	1.0000000	float
		damp	0.15000001	float
		rotdamp	0.34999999	float
		delta_bank_const	0.50000000	float
+		max_vel	{xyz={...} a1d=0x01a9b494 }	vec3d
+		afterburner_max_vel	{xyz={...} a1d=0x01a9b4a0 }	vec3d
+		max_rotvel	{xyz={...} a1d=0x01a9b4ac }	vec3d
+		rotation_time	{xyz={...} a1d=0x01a9b4b8 }	vec3d
		srotation_time	3.3000000	float
		max_rear_vel	0.00000000	float
		forward_accel	2.0000000	float
		afterburner_forward_accel	0.80000001	float
		forward_decel	1.5000000	float
		slide_accel	0.00000000	float
		slide_decel	0.00000000	float
+		warpin_anim	0x01a9b4e0 ""	char [32]
		warpin_radius	0.00000000	float
		warpin_snd_start	-1	int
		warpin_snd_end	-1	int
		warpin_speed	0.00000000	float
		warpin_time	0	int
		warpin_type	0	int
+		warpout_anim	0x01a9b518 ""	char [32]
		warpout_radius	0.00000000	float
		warpout_snd_start	-1	int
		warpout_snd_end	-1	int
		warpout_speed	0.00000000	float
		warpout_time	0	int
		warpout_type	0	int
		warpout_player_speed	0.00000000	float
		flags	302	int
		flags2	0	int
		ai_class	3	int
		max_speed	80.000000	float
		min_speed	-0.00000000	float
		max_accel	80.000000	float
		collision_damage_type_idx	-1	int
+		collision_physics	{both_small_bounce=5.0000000 bounce=5.0000000 friction=0.00000000 ...}	ship_collision_physics
+		shockwave	{name=0x01a9b580 "" pof_name=0x01a9b5a0 "" inner_rad=25.000000 ...}	shockwave_create_info
		explosion_propagates	0	int
		big_exp_visual_rad	-1.0000000	float
		shockwave_count	1	int
+		explosion_bitmap_anims	{...}	SCP_vector<int>
		vaporize_chance	0.00000000	float
		ispew_max_particles	-1	int
		dspew_max_particles	-1	int
		debris_min_lifetime	-1.0000000	float
		debris_max_lifetime	-1.0000000	float
		debris_min_speed	-1.0000000	float
		debris_max_speed	-1.0000000	float
		debris_min_rotspeed	-1.0000000	float
		debris_max_rotspeed	-1.0000000	float
		debris_damage_type_idx	-1	int
		debris_min_hitpoints	-1.0000000	float
		debris_max_hitpoints	-1.0000000	float
		debris_damage_mult	1.0000000	float
		debris_arc_percent	0.50000000	float
		n_subsystems	5	int
+		subsystems	0x03363010 {flags=0 name=0x03363014 "sensors" subobj_name=0x03363034 "sensors" ...}	model_subsystem *
		power_output	2.0000000	float
		max_overclocked_speed	100.00000	float
		max_weapon_reserve	150.00000	float
		max_shield_regen_per_second	0.020000000	float
		max_weapon_regen_per_second	0.039999999	float
		afterburner_fuel_capacity	330.00000	float
		afterburner_burn_rate	60.000000	float
		afterburner_recover_rate	25.000000	float
		afterburner_max_reverse_vel	0.00000000	float
		afterburner_reverse_accel	0.00000000	float
		cmeasure_type	80	int
		cmeasure_max	40	int
		num_primary_banks	2	int
		num_secondary_banks	2	int
+		primary_bank_weapons	0x01a9b680	int [3]
+		primary_bank_ammo_capacity	0x01a9b68c	int [3]
+		secondary_bank_weapons	0x01a9b698	int [4]
+		secondary_bank_ammo_capacity	0x01a9b6a8	int [4]
		max_hull_strength	265.00000	float
		max_shield_strength	350.00000	float
		hull_repair_rate	0.00000000	float
		subsys_repair_rate	-2.0000000	float
		sup_hull_repair_rate	0.15000001	float
		sup_shield_repair_rate	0.20000000	float
		sup_subsys_repair_rate	0.15000001	float
		engine_snd	126	int
+		closeup_pos	{xyz={...} a1d=0x01a9b6d8 }	vec3d
		closeup_zoom	0.50000000	float
+		allowed_weapons	0x01a9b6e8	int [300]
+		restricted_loadout_flag	0x01a9bb98	int [7]
+		allowed_bank_restricted_weapons	0x01a9bbb4	int [7][300]
		shield_icon_index	7 ''	unsigned char
+		icon_filename	0x01a9dc85 "iconfighter2t-03"	char [32]
+		anim_filename	0x01a9dca5 "ssfighter2t-03"	char [32]
+		overhead_filename	0x01a9dcc5 "loadfighter2t-03"	char [32]
		score	14	int
		scan_time	2000	int
+		ct_info	0x01a9dcf0 {pt={...} w_start=0.25000000 w_end=0.050000001 ...}	trail_info [12]
		ct_count	3	int
		num_nondark_colors	0	int
+		nondark_colors	0x01a9e088	unsigned char [10][3]
+		shield_color	0x01a9e0a6 "dd�"	unsigned char [3]
+		afterburner_trail	{filename=0x01a9e0ac "ABTrail" bitmap_id=0 }	generic_bitmap
		afterburner_trail_width_factor	1.0000000	float
		afterburner_trail_alpha_factor	1.0000000	float
		afterburner_trail_life	1.0000000	float
		afterburner_trail_faded_out_sections	0	int
+		normal_thruster_particles	{...}	SCP_vector<thruster_particles>
+		afterburner_thruster_particles	{...}	SCP_vector<thruster_particles>
+		thruster_flame_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_glow_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_secondary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
+		thruster_tertiary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
		thruster01_glow_rad_factor	1.0000000	float
		thruster02_glow_rad_factor	1.0000000	float
		thruster03_glow_rad_factor	1.0000000	float
		thruster02_glow_len_factor	1.0000000	float
		splodeing_texture	0	int
+		splodeing_texture_name	0x01a9e344 "boom"	char [32]
		max_decals	50	int
+		draw_primary_models	0x01a9e368	bool [3]
+		draw_secondary_models	0x01a9e36b	bool [4]
		draw_models	false	bool
		weapon_model_draw_distance	200.00000	float
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int
		can_glide	false	bool
		glide_cap	0.00000000	float
		glide_dynamic_cap	false	bool
		glide_accel_mult	0.00000000	float
		use_newtonian_damp	false	bool
		newtonian_damp_override	false	bool
		autoaim_fov	0.00000000	float
		topdown_offset_def	false	bool
+		topdown_offset	{xyz={...} a1d=0x01a9e398 }	vec3d
		num_maneuvering	0	int
+		maneuvering	0x01a9e3a8 {use_flags=0 start_snd=-1 loop_snd=-1 ...}	man_thruster [128]
		radar_image_2d_idx	-1	int
		radar_image_size	-1	int
		radar_projection_size_mult	1.0000000	float
+		ship_iff_info	0x01aa01b4	int [10][10]
		aiming_flags	0	int
		minimum_convergence_distance	0.00000000	float
		convergence_distance	100.00000	float
+		convergence_offset	{xyz={...} a1d=0x01aa0350 }	vec3d
		emp_resistance_mod	0.00000000	float
		piercing_damage_draw_limit	0.10000000	float
		damage_lightning_type	1	int
		Ship_info[sp->ship_info_index].max_hull_strength	265.00000	float
		hull_pct	1.0377358	float
-		objp	0x0117710c {next=0x01072d20 prev=0x01072d20 signature=3842 ...}	object *
+		next	0x01072d20 struct object obj_create_list {next=0x0117710c prev=0x0117710c signature=0 ...}	object *
+		prev	0x01072d20 struct object obj_create_list {next=0x0117710c prev=0x0117710c signature=0 ...}	object *
		signature	3842	int
		type	1 ''	char
		parent	-1	int
		parent_sig	3842	int
		parent_type	1 ''	char
		instance	1	int
		flags	2055	unsigned int
+		pos	{xyz={...} a1d=0x01177130 }	vec3d
+		orient	{vec={...} a2d=0x0117713c a1d=0x0117713c }	matrix
		radius	14.109169	float
+		last_pos	{xyz={...} a1d=0x01177164 }	vec3d
+		last_orient	{vec={...} a2d=0x01177170 a1d=0x01177170 }	matrix
+		phys_info	{flags=2 mass=113.19950 center_of_mass={...} ...}	physics_info
+		shield_quadrant	0x011772d0	float [4]
		hull_strength	275.00000	float
		sim_hull_strength	0.00000000	float
+		objsnd_num	0x011772e8	short [32]
		net_signature	22	unsigned short
		num_pairs	0	int
+		jnp	0x00000000 {m_name=0x0000000c <Bad Ptr> m_modelnum=??? m_objnum=??? ...}	jump_node *
+		dock_list	0x00000000 {next=??? dockpoint_used=??? docked_objp=??? }	dock_instance *
+		dead_dock_list	0x00000000 {next=??? dockpoint_used=??? docked_objp=??? }	dock_instance *
		collision_group_id	0	int
		objp->hull_strength	275.00000	float
-		sp	0x015762b8 {objnum=1889 ai_index=1 ship_info_index=7 ...}	ship *
		objnum	1889	int
		ai_index	1	int
		ship_info_index	7	int
		hotkey	-1	int
		escort_priority	0	int
		score	10	int
		assist_score_pct	0.00000000	float
		respawn_priority	0	int
		pre_death_explosion_happened	1 ''	unsigned char
		wash_killed	0	unsigned char
		cargo1	0	char
		wing_status_wing_index	0	char
		wing_status_wing_pos	0	char
		alt_type_index	-1 '�'	char
		callsign_index	-1 '�'	char
		targeting_laser_bank	-1 '�'	char
		num_corkscrew_to_fire	0	unsigned char
		targeting_laser_objnum	-1	int
		next_corkscrew_fire	1	int
		final_death_time	0	int
		death_time	-1	int
		end_death_time	0	int
		really_final_death_time	0	int
+		deathroll_rotvel	{xyz={...} a1d=0x015762fc }	vec3d
+		warpin_effect	0x06b9fb78 {portal_objp=0x00000000 total_time_start=-842150451 total_time_end=-842150451 ...}	WarpEffect *
+		warpout_effect	0x06b9fbf8 {portal_objp=0x00000000 total_time_start=-842150451 total_time_end=-842150451 ...}	WarpEffect *
		next_fireball	0	int
		next_hit_spark	0	int
		num_hits	0	int
+		sparks	0x0157631c {pos={...} submodel_num=-1 end_time=1906571 }	ship_spark [8]
		use_special_explosion	false	bool
		special_exp_damage	-1	int
		special_exp_blast	-1	int
		special_exp_inner	-1	int
		special_exp_outer	-1	int
		use_shockwave	false	bool
		special_exp_shockwave_speed	0	int
		special_hitpoints	0	int
		special_shield	-1	int
		ship_max_shield_strength	610.00000	float
		ship_max_hull_strength	275.00000	float
		ship_guardian_threshold	0	int
+		ship_name	0x015763ec "Alpha 1"	char [32]
		team	0	int
		time_cargo_revealed	0	long
		arrival_location	0	int
		arrival_distance	0	int
		arrival_anchor	-1	int
		arrival_path_mask	0	int
		arrival_cue	0	int
		arrival_delay	0	int
		departure_location	0	int
		departure_anchor	-1	int
		departure_path_mask	0	int
		departure_cue	0	int
		departure_delay	0	int
		wingnum	0	int
		orders_accepted	49407	int
+		subsys_list	{next=0x07a21c40 prev=0x07a25840 system_info=0x00000000 ...}	ship_subsys
+		last_targeted_subobject	0x01577348	ship_subsys * [12]
+		subsys_info	0x01577378 {num=0 total_hits=0.00000000 current_hits=0.00000000 }	ship_subsys_info [12]
+		shield_integrity	0x06b9fc78	float *
		shield_recharge_index	4	int
		weapon_recharge_index	4	int
		engine_recharge_index	4	int
		weapon_energy	150.00000	float
		current_max_speed	80.000000	float
		next_manage_ets	1980030	int
		flags	20971520	unsigned int
		flags2	0	unsigned int
		reinforcement_index	-1	int
		afterburner_fuel	330.00000	float
		cmeasure_count	40	int
		current_cmeasure	80	int
		cmeasure_fire_stamp	1	int
		target_shields_delta	0.00000000	float
		target_weapon_energy_delta	0.00000000	float
+		weapons	{num_primary_banks=2 num_secondary_banks=2 num_tertiary_banks=0 ...}	ship_weapon
		shield_hits	0	int
		wash_intensity	0.00000000	float
+		wash_rot_axis	{xyz={...} a1d=0x015775cc }	vec3d
		wash_timestamp	1	int
		num_swarm_missiles_to_fire	0	int
		next_swarm_fire	1	int
		next_swarm_path	8	int
		num_turret_swarm_info	0	int
		group	0	int
		death_roll_snd	-1	int
		ship_list_index	1	int
		thruster_bitmap	-1	int
		thruster_frame	0.00000000	float
		thruster_glow_bitmap	-1	int
		thruster_glow_frame	0.00000000	float
		thruster_glow_noise	1.0000000	float
		thruster_secondary_glow_bitmap	-1	int
		thruster_tertiary_glow_bitmap	-1	int
		next_engine_stutter	1	int
		base_texture_anim_frametime	1988575359	long
		total_damage_received	0.00000000	float
+		damage_ship	0x01577620	float [32]
+		damage_ship_id	0x015776a0	int [32]
		persona_index	0	int
		subsys_disrupted_flags	0	int
		subsys_disrupted_check_timestamp	1	int
		create_time	226979545	unsigned int
		ts_index	-1	int
		large_ship_blowup_index	-1	int
+		sub_expl_sound_handle	0x01577738	int [2]
+		arc_pts	0x01577740	vec3d [2][2]
+		arc_timestamp	0x01577770	int [2]
+		arc_type	0x01577778 ""	unsigned char [2]
		arc_next_time	0	int
		emp_intensity	-1.0000000	float
		emp_decr	0.00000000	float
+		trail_ptr	0x01577788	trail * [12]
		tag_total	0.00000000	float
		tag_left	-1.0000000	float
		time_first_tagged	0	long
		level2_tag_total	0.00000000	float
		level2_tag_left	-1.0000000	float
+		np_updates	0x015777cc {seq=0 update_stamp=-1 status_update_stamp=-1 ...}	np_update [12]
		lightning_stamp	-1	int
		awacs_warning_flag	1 ''	unsigned char
		special_warpin_objnum	-1	int
		special_warpout_objnum	-1	int
+		fighter_beam_turret_data	{next=0x00000000 prev=0x00000000 system_info=0x00000000 ...}	ship_subsys
+		beam_sys_info	{flags=0 name=0x015787d0 "" subobj_name=0x015787f0 "" ...}	model_subsystem
+		was_firing_last_frame	0x01578a6c	int [3]
		primitive_sensor_range	10000	int
+		ship_replacement_textures	0x00000000	int *
		current_viewpoint	0	int
+		ABtrail_ptr	0x01578a84	trail * [12]
+		ab_info	0x01578ab4 {pt={...} w_start=1.2509155 w_end=0.050000001 ...}	trail_info [12]
		ab_count	2	int
+		glow_point_bank_active	{...}	SCP_vector<bool>
+		texture_translation_key	{xyz={...} a1d=0x01578e6c }	vec3d
+		current_translation	{xyz={...} a1d=0x01578e78 }	vec3d
		cloak_stage	0	int
		time_until_full_cloak	1	long
		cloak_alpha	255	int
		time_until_uncloak	0	long
+		ship_decal_system	{decals=0x00000000 n_decal_textures=0 decals_modified=false ...}	decal_system
+		last_fired_point	0x01578ea4	int [3]
		bay_doors_anim_done_time	0	int
		bay_doors_status	0	unsigned char
		bay_doors_wanting_open	0	int
		bay_doors_launched_from	0	unsigned char
		bay_doors_need_open	false	bool
		bay_doors_parent_shipnum	-1	int
+		secondary_point_reload_pct	0x01578ec4	float [4][25]
+		primary_rotate_rate	0x01579054	float [3]
+		primary_rotate_ang	0x01579060	float [3]
+		thrusters_start	0x0157906c	int [128]
+		thrusters_sounds	0x0157926c	int [128]
+		s_alt_classes	{...}	SCP_vector<alt_class>
+		ship_iff_color	0x01579484	int [10][10]
		ammo_low_complaint_count	0	int
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int
		sp->ship_info_index	7	int


Locals:

		n	1	int
		ship_type	7	int
		by_sexp	0	int
-		ss	0xcccccccc {next=??? prev=??? system_info=??? ...}	ship_subsys *
		next	CXX0030: Error: expression cannot be evaluated	
		prev	CXX0030: Error: expression cannot be evaluated	
		system_info	CXX0030: Error: expression cannot be evaluated	
+		sub_name	0xccccccd8 <Bad Ptr>	char [32]
		current_hits	CXX0030: Error: expression cannot be evaluated	
		max_hits	CXX0030: Error: expression cannot be evaluated	
		flags	CXX0030: Error: expression cannot be evaluated	
		subsys_guardian_threshold	CXX0030: Error: expression cannot be evaluated	
		armor_type_idx	CXX0030: Error: expression cannot be evaluated	
		turret_best_weapon	CXX0030: Error: expression cannot be evaluated	
+		turret_last_fire_direction	{xyz={...} a1d=0xcccccd10 }	vec3d
		turret_next_enemy_check_stamp	CXX0030: Error: expression cannot be evaluated	
		turret_next_fire_stamp	CXX0030: Error: expression cannot be evaluated	
		turret_enemy_objnum	CXX0030: Error: expression cannot be evaluated	
		turret_enemy_sig	CXX0030: Error: expression cannot be evaluated	
		turret_next_fire_pos	CXX0030: Error: expression cannot be evaluated	
		turret_time_enemy_in_range	CXX0030: Error: expression cannot be evaluated	
+		turret_targeting_order	0xcccccd34	int [3]
		optimum_range	CXX0030: Error: expression cannot be evaluated	
		favor_current_facing	CXX0030: Error: expression cannot be evaluated	
		targeted_subsys	CXX0030: Error: expression cannot be evaluated	
		scripting_target_override	CXX0030: Error: expression cannot be evaluated	
		turret_pick_big_attack_point_timestamp	CXX0030: Error: expression cannot be evaluated	
+		turret_big_attack_point	{xyz={...} a1d=0xcccccd54 }	vec3d
		turret_animation_position	CXX0030: Error: expression cannot be evaluated	
		turret_animation_done_time	CXX0030: Error: expression cannot be evaluated	
+		turret_swarm_info_index	0xcccccd68	int [10]
		turret_swarm_num	CXX0030: Error: expression cannot be evaluated	
		awacs_intensity	CXX0030: Error: expression cannot be evaluated	
		awacs_radius	CXX0030: Error: expression cannot be evaluated	
+		weapons	{num_primary_banks=??? num_secondary_banks=??? num_tertiary_banks=??? ...}	ship_weapon
+		submodel_info_1	{blown_off=??? angs={...} prev_angs={...} ...}	submodel_instance_info
+		submodel_info_2	{blown_off=??? angs={...} prev_angs={...} ...}	submodel_instance_info
		disruption_timestamp	CXX0030: Error: expression cannot be evaluated	
		subsys_cargo_name	CXX0030: Error: expression cannot be evaluated	
		time_subsys_cargo_revealed	CXX0030: Error: expression cannot be evaluated	
+		trigger	{snd_pnt={...} start_sound=??? loop_sound=??? ...}	triggered_rotation
		points_to_target	CXX0030: Error: expression cannot be evaluated	
		base_rotation_rate_pct	CXX0030: Error: expression cannot be evaluated	
		gun_rotation_rate_pct	CXX0030: Error: expression cannot be evaluated	
		subsys_snd_flags	CXX0030: Error: expression cannot be evaluated	
		rotation_timestamp	CXX0030: Error: expression cannot be evaluated	
+		world_to_turret_matrix	{vec={...} a2d=0xccccdb08 a1d=0xccccdb08 }	matrix
+		target_priority	0xccccdb2c	int [32]
		num_target_priorities	CXX0030: Error: expression cannot be evaluated	
		next_aim_pos_time	CXX0030: Error: expression cannot be evaluated	
+		last_aim_enemy_pos	{xyz={...} a1d=0xccccdbb4 }	vec3d
+		last_aim_enemy_vel	{xyz={...} a1d=0xccccdbc0 }	vec3d
-		subsys_names	0xcccccccc	char * *
			CXX0030: Error: expression cannot be evaluated	
-		sip_orig	0x01a9b344 {name=0x01a9b344 "GTF Perseus" alt_name=0x01a9b364 "" short_name=0x01a9b384 "TFight2t-03" ...}	ship_info *
+		name	0x01a9b344 "GTF Perseus"	char [32]
+		alt_name	0x01a9b364 ""	char [32]
+		short_name	0x01a9b384 "TFight2t-03"	char [32]
		species	0	int
		class_type	6	int
+		type_str	0x033cc060 "Interceptor"	char *
+		maneuverability_str	0x033cc098 "High"	char *
+		armor_str	0x03362f60 "Average"	char *
+		manufacturer_str	0x03362f98 "Nankam Aeronautical"	char *
+		desc	0x00000000 <Bad Ptr>	char *
+		tech_desc	0x033cff78 "The GTF Perseus is the newest fighter in the GTVA's arsenal. Slated to replace the aging Valkyrie as the Alliance's primary interceptor, the Perseus's high max speed and maneuverability make it ideal to hunt and destroy enemy bombers. Perseus fighters have been assigned to the 3rd Battle Group on a trial basis, with wide deployment expected after the OpEval period. Primary weapons inc	char *
+		tech_title	0x01a9b3c4 ""	char [32]
+		ship_length	0x03362fd8 "17 m"	char *
+		gun_mounts	0x033cc000 "2 (2, 2)"	char *
+		missile_banks	0x034baa90 "2 (40, 40)"	char *
+		cockpit_pof_file	0x01a9b3f0 ""	char [32]
+		cockpit_offset	{xyz={...} a1d=0x01a9b410 }	vec3d
+		pof_file	0x01a9b41c "fighter2t-03.pof"	char [32]
+		pof_file_hud	0x01a9b43c ""	char [32]
		num_detail_levels	4	int
+		detail_distance	0x01a9b460	int [5]
		cockpit_model_num	-1	int
		model_num	48331	int
		model_num_hud	-1	int
		hud_target_lod	-1	int
		density	1.0000000	float
		damp	0.15000001	float
		rotdamp	0.34999999	float
		delta_bank_const	0.50000000	float
+		max_vel	{xyz={...} a1d=0x01a9b494 }	vec3d
+		afterburner_max_vel	{xyz={...} a1d=0x01a9b4a0 }	vec3d
+		max_rotvel	{xyz={...} a1d=0x01a9b4ac }	vec3d
+		rotation_time	{xyz={...} a1d=0x01a9b4b8 }	vec3d
		srotation_time	3.3000000	float
		max_rear_vel	0.00000000	float
		forward_accel	2.0000000	float
		afterburner_forward_accel	0.80000001	float
		forward_decel	1.5000000	float
		slide_accel	0.00000000	float
		slide_decel	0.00000000	float
+		warpin_anim	0x01a9b4e0 ""	char [32]
		warpin_radius	0.00000000	float
		warpin_snd_start	-1	int
		warpin_snd_end	-1	int
		warpin_speed	0.00000000	float
		warpin_time	0	int
		warpin_type	0	int
+		warpout_anim	0x01a9b518 ""	char [32]
		warpout_radius	0.00000000	float
		warpout_snd_start	-1	int
		warpout_snd_end	-1	int
		warpout_speed	0.00000000	float
		warpout_time	0	int
		warpout_type	0	int
		warpout_player_speed	0.00000000	float
		flags	302	int
		flags2	0	int
		ai_class	3	int
		max_speed	80.000000	float
		min_speed	-0.00000000	float
		max_accel	80.000000	float
		collision_damage_type_idx	-1	int
+		collision_physics	{both_small_bounce=5.0000000 bounce=5.0000000 friction=0.00000000 ...}	ship_collision_physics
+		shockwave	{name=0x01a9b580 "" pof_name=0x01a9b5a0 "" inner_rad=25.000000 ...}	shockwave_create_info
		explosion_propagates	0	int
		big_exp_visual_rad	-1.0000000	float
		shockwave_count	1	int
+		explosion_bitmap_anims	{...}	SCP_vector<int>
		vaporize_chance	0.00000000	float
		ispew_max_particles	-1	int
		dspew_max_particles	-1	int
		debris_min_lifetime	-1.0000000	float
		debris_max_lifetime	-1.0000000	float
		debris_min_speed	-1.0000000	float
		debris_max_speed	-1.0000000	float
		debris_min_rotspeed	-1.0000000	float
		debris_max_rotspeed	-1.0000000	float
		debris_damage_type_idx	-1	int
		debris_min_hitpoints	-1.0000000	float
		debris_max_hitpoints	-1.0000000	float
		debris_damage_mult	1.0000000	float
		debris_arc_percent	0.50000000	float
		n_subsystems	5	int
+		subsystems	0x03363010 {flags=0 name=0x03363014 "sensors" subobj_name=0x03363034 "sensors" ...}	model_subsystem *
		power_output	2.0000000	float
		max_overclocked_speed	100.00000	float
		max_weapon_reserve	150.00000	float
		max_shield_regen_per_second	0.020000000	float
		max_weapon_regen_per_second	0.039999999	float
		afterburner_fuel_capacity	330.00000	float
		afterburner_burn_rate	60.000000	float
		afterburner_recover_rate	25.000000	float
		afterburner_max_reverse_vel	0.00000000	float
		afterburner_reverse_accel	0.00000000	float
		cmeasure_type	80	int
		cmeasure_max	40	int
		num_primary_banks	2	int
		num_secondary_banks	2	int
+		primary_bank_weapons	0x01a9b680	int [3]
+		primary_bank_ammo_capacity	0x01a9b68c	int [3]
+		secondary_bank_weapons	0x01a9b698	int [4]
+		secondary_bank_ammo_capacity	0x01a9b6a8	int [4]
		max_hull_strength	265.00000	float
		max_shield_strength	350.00000	float
		hull_repair_rate	0.00000000	float
		subsys_repair_rate	-2.0000000	float
		sup_hull_repair_rate	0.15000001	float
		sup_shield_repair_rate	0.20000000	float
		sup_subsys_repair_rate	0.15000001	float
		engine_snd	126	int
+		closeup_pos	{xyz={...} a1d=0x01a9b6d8 }	vec3d
		closeup_zoom	0.50000000	float
+		allowed_weapons	0x01a9b6e8	int [300]
+		restricted_loadout_flag	0x01a9bb98	int [7]
+		allowed_bank_restricted_weapons	0x01a9bbb4	int [7][300]
		shield_icon_index	7 ''	unsigned char
+		icon_filename	0x01a9dc85 "iconfighter2t-03"	char [32]
+		anim_filename	0x01a9dca5 "ssfighter2t-03"	char [32]
+		overhead_filename	0x01a9dcc5 "loadfighter2t-03"	char [32]
		score	14	int
		scan_time	2000	int
+		ct_info	0x01a9dcf0 {pt={...} w_start=0.25000000 w_end=0.050000001 ...}	trail_info [12]
		ct_count	3	int
		num_nondark_colors	0	int
+		nondark_colors	0x01a9e088	unsigned char [10][3]
+		shield_color	0x01a9e0a6 "dd�"	unsigned char [3]
+		afterburner_trail	{filename=0x01a9e0ac "ABTrail" bitmap_id=0 }	generic_bitmap
		afterburner_trail_width_factor	1.0000000	float
		afterburner_trail_alpha_factor	1.0000000	float
		afterburner_trail_life	1.0000000	float
		afterburner_trail_faded_out_sections	0	int
+		normal_thruster_particles	{...}	SCP_vector<thruster_particles>
+		afterburner_thruster_particles	{...}	SCP_vector<thruster_particles>
+		thruster_flame_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_glow_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_secondary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
+		thruster_tertiary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
		thruster01_glow_rad_factor	1.0000000	float
		thruster02_glow_rad_factor	1.0000000	float
		thruster03_glow_rad_factor	1.0000000	float
		thruster02_glow_len_factor	1.0000000	float
		splodeing_texture	0	int
+		splodeing_texture_name	0x01a9e344 "boom"	char [32]
		max_decals	50	int
+		draw_primary_models	0x01a9e368	bool [3]
+		draw_secondary_models	0x01a9e36b	bool [4]
		draw_models	false	bool
		weapon_model_draw_distance	200.00000	float
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int
		can_glide	false	bool
		glide_cap	0.00000000	float
		glide_dynamic_cap	false	bool
		glide_accel_mult	0.00000000	float
		use_newtonian_damp	false	bool
		newtonian_damp_override	false	bool
		autoaim_fov	0.00000000	float
		topdown_offset_def	false	bool
+		topdown_offset	{xyz={...} a1d=0x01a9e398 }	vec3d
		num_maneuvering	0	int
+		maneuvering	0x01a9e3a8 {use_flags=0 start_snd=-1 loop_snd=-1 ...}	man_thruster [128]
		radar_image_2d_idx	-1	int
		radar_image_size	-1	int
		radar_projection_size_mult	1.0000000	float
+		ship_iff_info	0x01aa01b4	int [10][10]
		aiming_flags	0	int
		minimum_convergence_distance	0.00000000	float
		convergence_distance	100.00000	float
+		convergence_offset	{xyz={...} a1d=0x01aa0350 }	vec3d
		emp_resistance_mod	0.00000000	float
		piercing_damage_draw_limit	0.10000000	float
		damage_lightning_type	1	int
		num_saved_subsystems	-858993460	int
-		subsys_pcts	0xcccccccc	float *
			CXX0030: Error: expression cannot be evaluated	
-		objp	0x0117710c {next=0x01072d20 prev=0x01072d20 signature=3842 ...}	object *
+		next	0x01072d20 struct object obj_create_list {next=0x0117710c prev=0x0117710c signature=0 ...}	object *
+		prev	0x01072d20 struct object obj_create_list {next=0x0117710c prev=0x0117710c signature=0 ...}	object *
		signature	3842	int
		type	1 ''	char
		parent	-1	int
		parent_sig	3842	int
		parent_type	1 ''	char
		instance	1	int
		flags	2055	unsigned int
+		pos	{xyz={...} a1d=0x01177130 }	vec3d
+		orient	{vec={...} a2d=0x0117713c a1d=0x0117713c }	matrix
		radius	14.109169	float
+		last_pos	{xyz={...} a1d=0x01177164 }	vec3d
+		last_orient	{vec={...} a2d=0x01177170 a1d=0x01177170 }	matrix
+		phys_info	{flags=2 mass=113.19950 center_of_mass={...} ...}	physics_info
+		shield_quadrant	0x011772d0	float [4]
		hull_strength	275.00000	float
		sim_hull_strength	0.00000000	float
+		objsnd_num	0x011772e8	short [32]
		net_signature	22	unsigned short
		num_pairs	0	int
+		jnp	0x00000000 {m_name=0x0000000c <Bad Ptr> m_modelnum=??? m_objnum=??? ...}	jump_node *
+		dock_list	0x00000000 {next=??? dockpoint_used=??? docked_objp=??? }	dock_instance *
+		dead_dock_list	0x00000000 {next=??? dockpoint_used=??? docked_objp=??? }	dock_instance *
		collision_group_id	0	int
		hull_pct	1.0377358	float
-		ph_inf	{flags=2 mass=113.19950 center_of_mass={...} ...}	physics_info
		flags	2	unsigned int
		mass	113.19950	float
+		center_of_mass	{xyz={...} a1d=0x0012e750 }	vec3d
+		I_body_inv	{vec={...} a2d=0x0012e75c a1d=0x0012e75c }	matrix
		rotdamp	0.34999999	float
		side_slip_time_const	0.15000001	float
		delta_bank_const	0.50000000	float
+		max_vel	{xyz={...} a1d=0x0012e78c }	vec3d
+		afterburner_max_vel	{xyz={...} a1d=0x0012e798 }	vec3d
+		booster_max_vel	{xyz={...} a1d=0x0012e7a4 }	vec3d
+		max_rotvel	{xyz={...} a1d=0x0012e7b0 }	vec3d
		max_rear_vel	0.00000000	float
		forward_accel_time_const	2.0000000	float
		afterburner_forward_accel_time_const	0.80000001	float
		booster_forward_accel_time_const	0.00000000	float
		forward_decel_time_const	1.5000000	float
		slide_accel_time_const	0.00000000	float
		slide_decel_time_const	0.00000000	float
		shockwave_shake_amp	0.00000000	float
+		prev_ramp_vel	{xyz={...} a1d=0x0012e7dc }	vec3d
+		desired_vel	{xyz={...} a1d=0x0012e7e8 }	vec3d
+		desired_rotvel	{xyz={...} a1d=0x0012e7f4 }	vec3d
		forward_thrust	0.00000000	float
		side_thrust	0.00000000	float
		vert_thrust	0.00000000	float
+		vel	{xyz={...} a1d=0x0012e80c }	vec3d
+		rotvel	{xyz={...} a1d=0x0012e818 }	vec3d
		speed	0.00000000	float
		fspeed	0.00000000	float
		heading	0.00000000	float
+		prev_fvec	{xyz={...} a1d=0x0012e830 }	vec3d
+		last_rotmat	{vec={...} a2d=0x0012e83c a1d=0x0012e83c }	matrix
		afterburner_decay	1	int
		shockwave_decay	0	int
		reduced_damp_decay	0	int
		glide_cap	140.00000	float
		cur_glide_cap	80.000000	float
		glide_accel_mult	0.00000000	float
		use_newtonian_damp	false	bool
		afterburner_max_reverse_vel	0.00000000	float
		afterburner_reverse_accel	0.00000000	float
-		p_objp	0xcccccccc {name=0xcccccccc <Bad Ptr> next=??? prev=??? ...}	p_object *
+		name	0xcccccccc <Bad Ptr>	char [32]
		next	CXX0030: Error: expression cannot be evaluated	
		prev	CXX0030: Error: expression cannot be evaluated	
+		pos	{xyz={...} a1d=0xccccccf4 }	vec3d
+		orient	{vec={...} a2d=0xcccccd00 a1d=0xcccccd00 }	matrix
		ship_class	CXX0030: Error: expression cannot be evaluated	
		team	CXX0030: Error: expression cannot be evaluated	
		behavior	CXX0030: Error: expression cannot be evaluated	
		ai_goals	CXX0030: Error: expression cannot be evaluated	
		cargo1	CXX0030: Error: expression cannot be evaluated	
		status_count	CXX0030: Error: expression cannot be evaluated	
+		status_type	0xcccccd3c	int [10]
+		status	0xcccccd64	int [10]
+		target	0xcccccd8c	int [10]
		subsys_index	CXX0030: Error: expression cannot be evaluated	
		subsys_count	CXX0030: Error: expression cannot be evaluated	
		initial_velocity	CXX0030: Error: expression cannot be evaluated	
		initial_hull	CXX0030: Error: expression cannot be evaluated	
		initial_shields	CXX0030: Error: expression cannot be evaluated	
		arrival_location	CXX0030: Error: expression cannot be evaluated	
		arrival_distance	CXX0030: Error: expression cannot be evaluated	
		arrival_anchor	CXX0030: Error: expression cannot be evaluated	
		arrival_path_mask	CXX0030: Error: expression cannot be evaluated	
		arrival_cue	CXX0030: Error: expression cannot be evaluated	
		arrival_delay	CXX0030: Error: expression cannot be evaluated	
		departure_location	CXX0030: Error: expression cannot be evaluated	
		departure_anchor	CXX0030: Error: expression cannot be evaluated	
		departure_path_mask	CXX0030: Error: expression cannot be evaluated	
		departure_cue	CXX0030: Error: expression cannot be evaluated	
		departure_delay	CXX0030: Error: expression cannot be evaluated	
+		misc	0xcccccdf4 <Bad Ptr>	char [32]
		wingnum	CXX0030: Error: expression cannot be evaluated	
		pos_in_wing	CXX0030: Error: expression cannot be evaluated	
		flags	CXX0030: Error: expression cannot be evaluated	
		flags2	CXX0030: Error: expression cannot be evaluated	
		escort_priority	CXX0030: Error: expression cannot be evaluated	
		ai_class	CXX0030: Error: expression cannot be evaluated	
		hotkey	CXX0030: Error: expression cannot be evaluated	
		score	CXX0030: Error: expression cannot be evaluated	
		assist_score_pct	CXX0030: Error: expression cannot be evaluated	
		orders_accepted	CXX0030: Error: expression cannot be evaluated	
		dock_list	CXX0017: Error: symbol "" not found	
		created_object	CXX0030: Error: expression cannot be evaluated	
		group	CXX0030: Error: expression cannot be evaluated	
		persona_index	CXX0030: Error: expression cannot be evaluated	
		kamikaze_damage	CXX0030: Error: expression cannot be evaluated	
		use_special_explosion	CXX0030: Error: expression cannot be evaluated	
		special_exp_damage	CXX0030: Error: expression cannot be evaluated	
		special_exp_blast	CXX0030: Error: expression cannot be evaluated	
		special_exp_inner	CXX0030: Error: expression cannot be evaluated	
		special_exp_outer	CXX0030: Error: expression cannot be evaluated	
		use_shockwave	CXX0030: Error: expression cannot be evaluated	
		special_exp_shockwave_speed	CXX0030: Error: expression cannot be evaluated	
		special_hitpoints	CXX0030: Error: expression cannot be evaluated	
		special_shield	CXX0030: Error: expression cannot be evaluated	
		net_signature	CXX0030: Error: expression cannot be evaluated	
		destroy_before_mission_time	CXX0030: Error: expression cannot be evaluated	
		wing_status_wing_index	CXX0030: Error: expression cannot be evaluated	
		wing_status_wing_pos	CXX0030: Error: expression cannot be evaluated	
		respawn_count	CXX0030: Error: expression cannot be evaluated	
		respawn_priority	CXX0030: Error: expression cannot be evaluated	
		alt_type_index	CXX0030: Error: expression cannot be evaluated	
		callsign_index	CXX0030: Error: expression cannot be evaluated	
		ship_max_hull_strength	CXX0030: Error: expression cannot be evaluated	
		ship_max_shield_strength	CXX0030: Error: expression cannot be evaluated	
		num_texture_replacements	CXX0030: Error: expression cannot be evaluated	
+		replacement_textures	0xccccce98 {ship_name=0xccccce98 <Bad Ptr> old_texture=0xccccceb8 <Bad Ptr> new_texture=0xccccced8 <Bad Ptr> ...}	texture_replace [320]
+		alt_classes	{...}	SCP_vector<alt_class>
+		alt_iff_color	0xcccd4bb0	int [10][10]
-		swp	0x01577448 {num_primary_banks=2 num_secondary_banks=2 num_tertiary_banks=0 ...}	ship_weapon *
		num_primary_banks	2	int
		num_secondary_banks	2	int
		num_tertiary_banks	0	int
+		primary_bank_weapons	0x01577454	int [3]
+		secondary_bank_weapons	0x01577460	int [4]
		current_primary_bank	0	int
		current_secondary_bank	0	int
		current_tertiary_bank	0	int
+		next_primary_fire_stamp	0x0157747c	int [3]
+		last_primary_fire_stamp	0x01577488	int [3]
+		next_secondary_fire_stamp	0x01577494	int [4]
+		last_secondary_fire_stamp	0x015774a4	int [4]
		next_tertiary_fire_stamp	0	int
+		primary_bank_ammo	0x015774b8	int [3]
+		primary_bank_start_ammo	0x015774c4	int [3]
+		primary_bank_capacity	0x015774d0	int [3]
+		primary_next_slot	0x015774dc	int [3]
+		primary_bank_rearm_time	0x015774e8	int [3]
+		secondary_bank_ammo	0x015774f4	int [4]
+		secondary_bank_start_ammo	0x01577504	int [4]
+		secondary_bank_capacity	0x01577514	int [4]
+		secondary_next_slot	0x01577524	int [4]
+		secondary_bank_rearm_time	0x01577534	int [4]
		tertiary_bank_ammo	0	int
		tertiary_bank_start_ammo	0	int
		tertiary_bank_capacity	0	int
		tertiary_bank_rearm_time	0	int
		last_fired_weapon_index	1113	int
		last_fired_weapon_signature	3084	int
		detonate_weapon_time	1957597	int
		ai_class	3	int
		flags	0	int
+		primary_animation_position	0x01577568 ""	unsigned char [3]
+		secondary_animation_position	0x0157756b ""	unsigned char [4]
+		primary_animation_done_time	0x01577570	int [3]
+		secondary_animation_done_time	0x0157757c	int [4]
+		burst_counter	0x0157758c	int [7]
+		external_model_fp_counter	0x015775a8	int [7]
		shield_pct	-1.0737418e+008	float
-		sip	0x01a9b344 {name=0x01a9b344 "GTF Perseus" alt_name=0x01a9b364 "" short_name=0x01a9b384 "TFight2t-03" ...}	ship_info *
+		name	0x01a9b344 "GTF Perseus"	char [32]
+		alt_name	0x01a9b364 ""	char [32]
+		short_name	0x01a9b384 "TFight2t-03"	char [32]
		species	0	int
		class_type	6	int
+		type_str	0x033cc060 "Interceptor"	char *
+		maneuverability_str	0x033cc098 "High"	char *
+		armor_str	0x03362f60 "Average"	char *
+		manufacturer_str	0x03362f98 "Nankam Aeronautical"	char *
+		desc	0x00000000 <Bad Ptr>	char *
+		tech_desc	0x033cff78 "The GTF Perseus is the newest fighter in the GTVA's arsenal. Slated to replace the aging Valkyrie as the Alliance's primary interceptor, the Perseus's high max speed and maneuverability make it ideal to hunt and destroy enemy bombers. Perseus fighters have been assigned to the 3rd Battle Group on a trial basis, with wide deployment expected after the OpEval period. Primary weapons inc	char *
+		tech_title	0x01a9b3c4 ""	char [32]
+		ship_length	0x03362fd8 "17 m"	char *
+		gun_mounts	0x033cc000 "2 (2, 2)"	char *
+		missile_banks	0x034baa90 "2 (40, 40)"	char *
+		cockpit_pof_file	0x01a9b3f0 ""	char [32]
+		cockpit_offset	{xyz={...} a1d=0x01a9b410 }	vec3d
+		pof_file	0x01a9b41c "fighter2t-03.pof"	char [32]
+		pof_file_hud	0x01a9b43c ""	char [32]
		num_detail_levels	4	int
+		detail_distance	0x01a9b460	int [5]
		cockpit_model_num	-1	int
		model_num	48331	int
		model_num_hud	-1	int
		hud_target_lod	-1	int
		density	1.0000000	float
		damp	0.15000001	float
		rotdamp	0.34999999	float
		delta_bank_const	0.50000000	float
+		max_vel	{xyz={...} a1d=0x01a9b494 }	vec3d
+		afterburner_max_vel	{xyz={...} a1d=0x01a9b4a0 }	vec3d
+		max_rotvel	{xyz={...} a1d=0x01a9b4ac }	vec3d
+		rotation_time	{xyz={...} a1d=0x01a9b4b8 }	vec3d
		srotation_time	3.3000000	float
		max_rear_vel	0.00000000	float
		forward_accel	2.0000000	float
		afterburner_forward_accel	0.80000001	float
		forward_decel	1.5000000	float
		slide_accel	0.00000000	float
		slide_decel	0.00000000	float
+		warpin_anim	0x01a9b4e0 ""	char [32]
		warpin_radius	0.00000000	float
		warpin_snd_start	-1	int
		warpin_snd_end	-1	int
		warpin_speed	0.00000000	float
		warpin_time	0	int
		warpin_type	0	int
+		warpout_anim	0x01a9b518 ""	char [32]
		warpout_radius	0.00000000	float
		warpout_snd_start	-1	int
		warpout_snd_end	-1	int
		warpout_speed	0.00000000	float
		warpout_time	0	int
		warpout_type	0	int
		warpout_player_speed	0.00000000	float
		flags	302	int
		flags2	0	int
		ai_class	3	int
		max_speed	80.000000	float
		min_speed	-0.00000000	float
		max_accel	80.000000	float
		collision_damage_type_idx	-1	int
+		collision_physics	{both_small_bounce=5.0000000 bounce=5.0000000 friction=0.00000000 ...}	ship_collision_physics
+		shockwave	{name=0x01a9b580 "" pof_name=0x01a9b5a0 "" inner_rad=25.000000 ...}	shockwave_create_info
		explosion_propagates	0	int
		big_exp_visual_rad	-1.0000000	float
		shockwave_count	1	int
+		explosion_bitmap_anims	{...}	SCP_vector<int>
		vaporize_chance	0.00000000	float
		ispew_max_particles	-1	int
		dspew_max_particles	-1	int
		debris_min_lifetime	-1.0000000	float
		debris_max_lifetime	-1.0000000	float
		debris_min_speed	-1.0000000	float
		debris_max_speed	-1.0000000	float
		debris_min_rotspeed	-1.0000000	float
		debris_max_rotspeed	-1.0000000	float
		debris_damage_type_idx	-1	int
		debris_min_hitpoints	-1.0000000	float
		debris_max_hitpoints	-1.0000000	float
		debris_damage_mult	1.0000000	float
		debris_arc_percent	0.50000000	float
		n_subsystems	5	int
+		subsystems	0x03363010 {flags=0 name=0x03363014 "sensors" subobj_name=0x03363034 "sensors" ...}	model_subsystem *
		power_output	2.0000000	float
		max_overclocked_speed	100.00000	float
		max_weapon_reserve	150.00000	float
		max_shield_regen_per_second	0.020000000	float
		max_weapon_regen_per_second	0.039999999	float
		afterburner_fuel_capacity	330.00000	float
		afterburner_burn_rate	60.000000	float
		afterburner_recover_rate	25.000000	float
		afterburner_max_reverse_vel	0.00000000	float
		afterburner_reverse_accel	0.00000000	float
		cmeasure_type	80	int
		cmeasure_max	40	int
		num_primary_banks	2	int
		num_secondary_banks	2	int
+		primary_bank_weapons	0x01a9b680	int [3]
+		primary_bank_ammo_capacity	0x01a9b68c	int [3]
+		secondary_bank_weapons	0x01a9b698	int [4]
+		secondary_bank_ammo_capacity	0x01a9b6a8	int [4]
		max_hull_strength	265.00000	float
		max_shield_strength	350.00000	float
		hull_repair_rate	0.00000000	float
		subsys_repair_rate	-2.0000000	float
		sup_hull_repair_rate	0.15000001	float
		sup_shield_repair_rate	0.20000000	float
		sup_subsys_repair_rate	0.15000001	float
		engine_snd	126	int
+		closeup_pos	{xyz={...} a1d=0x01a9b6d8 }	vec3d
		closeup_zoom	0.50000000	float
+		allowed_weapons	0x01a9b6e8	int [300]
+		restricted_loadout_flag	0x01a9bb98	int [7]
+		allowed_bank_restricted_weapons	0x01a9bbb4	int [7][300]
		shield_icon_index	7 ''	unsigned char
+		icon_filename	0x01a9dc85 "iconfighter2t-03"	char [32]
+		anim_filename	0x01a9dca5 "ssfighter2t-03"	char [32]
+		overhead_filename	0x01a9dcc5 "loadfighter2t-03"	char [32]
		score	14	int
		scan_time	2000	int
+		ct_info	0x01a9dcf0 {pt={...} w_start=0.25000000 w_end=0.050000001 ...}	trail_info [12]
		ct_count	3	int
		num_nondark_colors	0	int
+		nondark_colors	0x01a9e088	unsigned char [10][3]
+		shield_color	0x01a9e0a6 "dd�"	unsigned char [3]
+		afterburner_trail	{filename=0x01a9e0ac "ABTrail" bitmap_id=0 }	generic_bitmap
		afterburner_trail_width_factor	1.0000000	float
		afterburner_trail_alpha_factor	1.0000000	float
		afterburner_trail_life	1.0000000	float
		afterburner_trail_faded_out_sections	0	int
+		normal_thruster_particles	{...}	SCP_vector<thruster_particles>
+		afterburner_thruster_particles	{...}	SCP_vector<thruster_particles>
+		thruster_flame_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_glow_info	{normal={...} afterburn={...} }	thrust_pair
+		thruster_secondary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
+		thruster_tertiary_glow_info	{normal={...} afterburn={...} }	thrust_pair_bitmap
		thruster01_glow_rad_factor	1.0000000	float
		thruster02_glow_rad_factor	1.0000000	float
		thruster03_glow_rad_factor	1.0000000	float
		thruster02_glow_len_factor	1.0000000	float
		splodeing_texture	0	int
+		splodeing_texture_name	0x01a9e344 "boom"	char [32]
		max_decals	50	int
+		draw_primary_models	0x01a9e368	bool [3]
+		draw_secondary_models	0x01a9e36b	bool [4]
		draw_models	false	bool
		weapon_model_draw_distance	200.00000	float
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int
		can_glide	false	bool
		glide_cap	0.00000000	float
		glide_dynamic_cap	false	bool
		glide_accel_mult	0.00000000	float
		use_newtonian_damp	false	bool
		newtonian_damp_override	false	bool
		autoaim_fov	0.00000000	float
		topdown_offset_def	false	bool
+		topdown_offset	{xyz={...} a1d=0x01a9e398 }	vec3d
		num_maneuvering	0	int
+		maneuvering	0x01a9e3a8 {use_flags=0 start_snd=-1 loop_snd=-1 ...}	man_thruster [128]
		radar_image_2d_idx	-1	int
		radar_image_size	-1	int
		radar_projection_size_mult	1.0000000	float
+		ship_iff_info	0x01aa01b4	int [10][10]
		aiming_flags	0	int
		minimum_convergence_distance	0.00000000	float
		convergence_distance	100.00000	float
+		convergence_offset	{xyz={...} a1d=0x01aa0350 }	vec3d
		emp_resistance_mod	0.00000000	float
		piercing_damage_draw_limit	0.10000000	float
		damage_lightning_type	1	int
		i	-858993460	int
-		sp	0x015762b8 {objnum=1889 ai_index=1 ship_info_index=7 ...}	ship *
		objnum	1889	int
		ai_index	1	int
		ship_info_index	7	int
		hotkey	-1	int
		escort_priority	0	int
		score	10	int
		assist_score_pct	0.00000000	float
		respawn_priority	0	int
		pre_death_explosion_happened	1 ''	unsigned char
		wash_killed	0	unsigned char
		cargo1	0	char
		wing_status_wing_index	0	char
		wing_status_wing_pos	0	char
		alt_type_index	-1 '�'	char
		callsign_index	-1 '�'	char
		targeting_laser_bank	-1 '�'	char
		num_corkscrew_to_fire	0	unsigned char
		targeting_laser_objnum	-1	int
		next_corkscrew_fire	1	int
		final_death_time	0	int
		death_time	-1	int
		end_death_time	0	int
		really_final_death_time	0	int
+		deathroll_rotvel	{xyz={...} a1d=0x015762fc }	vec3d
+		warpin_effect	0x06b9fb78 {portal_objp=0x00000000 total_time_start=-842150451 total_time_end=-842150451 ...}	WarpEffect *
+		warpout_effect	0x06b9fbf8 {portal_objp=0x00000000 total_time_start=-842150451 total_time_end=-842150451 ...}	WarpEffect *
		next_fireball	0	int
		next_hit_spark	0	int
		num_hits	0	int
+		sparks	0x0157631c {pos={...} submodel_num=-1 end_time=1906571 }	ship_spark [8]
		use_special_explosion	false	bool
		special_exp_damage	-1	int
		special_exp_blast	-1	int
		special_exp_inner	-1	int
		special_exp_outer	-1	int
		use_shockwave	false	bool
		special_exp_shockwave_speed	0	int
		special_hitpoints	0	int
		special_shield	-1	int
		ship_max_shield_strength	610.00000	float
		ship_max_hull_strength	275.00000	float
		ship_guardian_threshold	0	int
+		ship_name	0x015763ec "Alpha 1"	char [32]
		team	0	int
		time_cargo_revealed	0	long
		arrival_location	0	int
		arrival_distance	0	int
		arrival_anchor	-1	int
		arrival_path_mask	0	int
		arrival_cue	0	int
		arrival_delay	0	int
		departure_location	0	int
		departure_anchor	-1	int
		departure_path_mask	0	int
		departure_cue	0	int
		departure_delay	0	int
		wingnum	0	int
		orders_accepted	49407	int
+		subsys_list	{next=0x07a21c40 prev=0x07a25840 system_info=0x00000000 ...}	ship_subsys
+		last_targeted_subobject	0x01577348	ship_subsys * [12]
+		subsys_info	0x01577378 {num=0 total_hits=0.00000000 current_hits=0.00000000 }	ship_subsys_info [12]
+		shield_integrity	0x06b9fc78	float *
		shield_recharge_index	4	int
		weapon_recharge_index	4	int
		engine_recharge_index	4	int
		weapon_energy	150.00000	float
		current_max_speed	80.000000	float
		next_manage_ets	1980030	int
		flags	20971520	unsigned int
		flags2	0	unsigned int
		reinforcement_index	-1	int
		afterburner_fuel	330.00000	float
		cmeasure_count	40	int
		current_cmeasure	80	int
		cmeasure_fire_stamp	1	int
		target_shields_delta	0.00000000	float
		target_weapon_energy_delta	0.00000000	float
+		weapons	{num_primary_banks=2 num_secondary_banks=2 num_tertiary_banks=0 ...}	ship_weapon
		shield_hits	0	int
		wash_intensity	0.00000000	float
+		wash_rot_axis	{xyz={...} a1d=0x015775cc }	vec3d
		wash_timestamp	1	int
		num_swarm_missiles_to_fire	0	int
		next_swarm_fire	1	int
		next_swarm_path	8	int
		num_turret_swarm_info	0	int
		group	0	int
		death_roll_snd	-1	int
		ship_list_index	1	int
		thruster_bitmap	-1	int
		thruster_frame	0.00000000	float
		thruster_glow_bitmap	-1	int
		thruster_glow_frame	0.00000000	float
		thruster_glow_noise	1.0000000	float
		thruster_secondary_glow_bitmap	-1	int
		thruster_tertiary_glow_bitmap	-1	int
		next_engine_stutter	1	int
		base_texture_anim_frametime	1988575359	long
		total_damage_received	0.00000000	float
+		damage_ship	0x01577620	float [32]
+		damage_ship_id	0x015776a0	int [32]
		persona_index	0	int
		subsys_disrupted_flags	0	int
		subsys_disrupted_check_timestamp	1	int
		create_time	226979545	unsigned int
		ts_index	-1	int
		large_ship_blowup_index	-1	int
+		sub_expl_sound_handle	0x01577738	int [2]
+		arc_pts	0x01577740	vec3d [2][2]
+		arc_timestamp	0x01577770	int [2]
+		arc_type	0x01577778 ""	unsigned char [2]
		arc_next_time	0	int
		emp_intensity	-1.0000000	float
		emp_decr	0.00000000	float
+		trail_ptr	0x01577788	trail * [12]
		tag_total	0.00000000	float
		tag_left	-1.0000000	float
		time_first_tagged	0	long
		level2_tag_total	0.00000000	float
		level2_tag_left	-1.0000000	float
+		np_updates	0x015777cc {seq=0 update_stamp=-1 status_update_stamp=-1 ...}	np_update [12]
		lightning_stamp	-1	int
		awacs_warning_flag	1 ''	unsigned char
		special_warpin_objnum	-1	int
		special_warpout_objnum	-1	int
+		fighter_beam_turret_data	{next=0x00000000 prev=0x00000000 system_info=0x00000000 ...}	ship_subsys
+		beam_sys_info	{flags=0 name=0x015787d0 "" subobj_name=0x015787f0 "" ...}	model_subsystem
+		was_firing_last_frame	0x01578a6c	int [3]
		primitive_sensor_range	10000	int
+		ship_replacement_textures	0x00000000	int *
		current_viewpoint	0	int
+		ABtrail_ptr	0x01578a84	trail * [12]
+		ab_info	0x01578ab4 {pt={...} w_start=1.2509155 w_end=0.050000001 ...}	trail_info [12]
		ab_count	2	int
+		glow_point_bank_active	{...}	SCP_vector<bool>
+		texture_translation_key	{xyz={...} a1d=0x01578e6c }	vec3d
+		current_translation	{xyz={...} a1d=0x01578e78 }	vec3d
		cloak_stage	0	int
		time_until_full_cloak	1	long
		cloak_alpha	255	int
		time_until_uncloak	0	long
+		ship_decal_system	{decals=0x00000000 n_decal_textures=0 decals_modified=false ...}	decal_system
+		last_fired_point	0x01578ea4	int [3]
		bay_doors_anim_done_time	0	int
		bay_doors_status	0	unsigned char
		bay_doors_wanting_open	0	int
		bay_doors_launched_from	0	unsigned char
		bay_doors_need_open	false	bool
		bay_doors_parent_shipnum	-1	int
+		secondary_point_reload_pct	0x01578ec4	float [4][25]
+		primary_rotate_rate	0x01579054	float [3]
+		primary_rotate_ang	0x01579060	float [3]
+		thrusters_start	0x0157906c	int [128]
+		thrusters_sounds	0x0157926c	int [128]
+		s_alt_classes	{...}	SCP_vector<alt_class>
+		ship_iff_color	0x01579484	int [10][10]
		ammo_low_complaint_count	0	int
		armor_type_idx	2	int
		shield_armor_type_idx	-1	int


Autos up one level:

-		Wss_slots_teams	0x022cb938 struct wss_unit (* Wss_slots_teams)[12]	wss_unit [2][12]
-		[0]	0x022cb938 struct wss_unit (* Wss_slots_teams)[12] {ship_class=7 wep=0x022cb93c wep_count=0x022cb958 }	wss_unit [12]
-		[0]	{ship_class=7 wep=0x022cb93c wep_count=0x022cb958 }	wss_unit
		ship_class	7	int
+		wep	0x022cb93c	int [7]
+		wep_count	0x022cb958	int [7]
+		[1]	{ship_class=7 wep=0x022cb978 wep_count=0x022cb994 }	wss_unit
+		[2]	{ship_class=7 wep=0x022cb9b4 wep_count=0x022cb9d0 }	wss_unit
+		[3]	{ship_class=7 wep=0x022cb9f0 wep_count=0x022cba0c }	wss_unit
+		[4]	{ship_class=12 wep=0x022cba2c wep_count=0x022cba48 }	wss_unit
+		[5]	{ship_class=12 wep=0x022cba68 wep_count=0x022cba84 }	wss_unit
+		[6]	{ship_class=12 wep=0x022cbaa4 wep_count=0x022cbac0 }	wss_unit
+		[7]	{ship_class=255 wep=0x022cbae0 wep_count=0x022cbafc }	wss_unit
+		[8]	{ship_class=255 wep=0x022cbb1c wep_count=0x022cbb38 }	wss_unit
+		[9]	{ship_class=255 wep=0x022cbb58 wep_count=0x022cbb74 }	wss_unit
+		[10]	{ship_class=255 wep=0x022cbb94 wep_count=0x022cbbb0 }	wss_unit
+		[11]	{ship_class=255 wep=0x022cbbd0 wep_count=0x022cbbec }	wss_unit
-		[1]	0x022cbc08 {ship_class=0 wep=0x022cbc0c wep_count=0x022cbc28 }	wss_unit [12]
-		[0]	{ship_class=0 wep=0x022cbc0c wep_count=0x022cbc28 }	wss_unit
		ship_class	0	int
+		wep	0x022cbc0c	int [7]
+		wep_count	0x022cbc28	int [7]
+		[1]	{ship_class=0 wep=0x022cbc48 wep_count=0x022cbc64 }	wss_unit
+		[2]	{ship_class=0 wep=0x022cbc84 wep_count=0x022cbca0 }	wss_unit
+		[3]	{ship_class=0 wep=0x022cbcc0 wep_count=0x022cbcdc }	wss_unit
+		[4]	{ship_class=0 wep=0x022cbcfc wep_count=0x022cbd18 }	wss_unit
+		[5]	{ship_class=0 wep=0x022cbd38 wep_count=0x022cbd54 }	wss_unit
+		[6]	{ship_class=0 wep=0x022cbd74 wep_count=0x022cbd90 }	wss_unit
+		[7]	{ship_class=0 wep=0x022cbdb0 wep_count=0x022cbdcc }	wss_unit
+		[8]	{ship_class=0 wep=0x022cbdec wep_count=0x022cbe08 }	wss_unit
+		[9]	{ship_class=0 wep=0x022cbe28 wep_count=0x022cbe44 }	wss_unit
+		[10]	{ship_class=0 wep=0x022cbe64 wep_count=0x022cbe80 }	wss_unit
+		[11]	{ship_class=0 wep=0x022cbea0 wep_count=0x022cbebc }	wss_unit
-		Wss_slots_teams[team]	0x022cb938 struct wss_unit (* Wss_slots_teams)[12] {ship_class=7 wep=0x022cb93c wep_count=0x022cb958 }	wss_unit [12]
-		[0]	{ship_class=7 wep=0x022cb93c wep_count=0x022cb958 }	wss_unit
		ship_class	7	int
+		wep	0x022cb93c	int [7]
+		wep_count	0x022cb958	int [7]
+		[1]	{ship_class=7 wep=0x022cb978 wep_count=0x022cb994 }	wss_unit
+		[2]	{ship_class=7 wep=0x022cb9b4 wep_count=0x022cb9d0 }	wss_unit
+		[3]	{ship_class=7 wep=0x022cb9f0 wep_count=0x022cba0c }	wss_unit
+		[4]	{ship_class=12 wep=0x022cba2c wep_count=0x022cba48 }	wss_unit
+		[5]	{ship_class=12 wep=0x022cba68 wep_count=0x022cba84 }	wss_unit
+		[6]	{ship_class=12 wep=0x022cbaa4 wep_count=0x022cbac0 }	wss_unit
+		[7]	{ship_class=255 wep=0x022cbae0 wep_count=0x022cbafc }	wss_unit
+		[8]	{ship_class=255 wep=0x022cbb1c wep_count=0x022cbb38 }	wss_unit
+		[9]	{ship_class=255 wep=0x022cbb58 wep_count=0x022cbb74 }	wss_unit
+		[10]	{ship_class=255 wep=0x022cbb94 wep_count=0x022cbbb0 }	wss_unit
+		[11]	{ship_class=255 wep=0x022cbbd0 wep_count=0x022cbbec }	wss_unit
-		Wss_slots_teams[team][slot_index]	{ship_class=7 wep=0x022cb93c wep_count=0x022cb958 }	wss_unit
		ship_class	7	int
+		wep	0x022cb93c	int [7]
+		wep_count	0x022cb958	int [7]
		Wss_slots_teams[team][slot_index].ship_class	7	int
-		objp	0x0117710c {next=0x01072d20 prev=0x01072d20 signature=3842 ...}	object *
+		next	0x01072d20 struct object obj_create_list {next=0x0117710c prev=0x0117710c signature=0 ...}	object *
+		prev	0x01072d20 struct object obj_create_list {next=0x0117710c prev=0x0117710c signature=0 ...}	object *
		signature	3842	int
		type	1 ''	char
		parent	-1	int
		parent_sig	3842	int
		parent_type	1 ''	char
		instance	1	int
		flags	2055	unsigned int
+		pos	{xyz={...} a1d=0x01177130 }	vec3d
+		orient	{vec={...} a2d=0x0117713c a1d=0x0117713c }	matrix
		radius	14.109169	float
+		last_pos	{xyz={...} a1d=0x01177164 }	vec3d
+		last_orient	{vec={...} a2d=0x01177170 a1d=0x01177170 }	matrix
+		phys_info	{flags=2 mass=113.19950 center_of_mass={...} ...}	physics_info
+		shield_quadrant	0x011772d0	float [4]
		hull_strength	275.00000	float
		sim_hull_strength	0.00000000	float
+		objsnd_num	0x011772e8	short [32]
		net_signature	22	unsigned short
		num_pairs	0	int
+		jnp	0x00000000 {m_name=0x0000000c <Bad Ptr> m_modelnum=??? m_objnum=??? ...}	jump_node *
+		dock_list	0x00000000 {next=??? dockpoint_used=??? docked_objp=??? }	dock_instance *
+		dead_dock_list	0x00000000 {next=??? dockpoint_used=??? docked_objp=??? }	dock_instance *
		collision_group_id	0	int
		objp->instance	1	int
		slot_index	0	int


Autos up 2 levels:

		objnum	-858993460	int
-		pobjp	0x06410040 {name=0x06410040 "Alpha 1" next=0x064180b4 prev=0x01016fc8 ...}	p_object *
+		name	0x06410040 "Alpha 1"	char [32]
+		next	0x064180b4 {name=0x064180b4 "Alpha 2" next=0x06420128 prev=0x06410040 ...}	p_object *
+		prev	0x01016fc8 struct p_object Ship_arrival_list {name=0x01016fc8 "" next=0x06410040 prev=0x064b0950 ...}	p_object *
+		pos	{xyz={...} a1d=0x06410068 }	vec3d
+		orient	{vec={...} a2d=0x06410074 a1d=0x06410074 }	matrix
		ship_class	7	int
		team	0	int
		behavior	9	int
		ai_goals	-1	int
		cargo1	0	char
		status_count	0	int
+		status_type	0x064100b0	int [10]
+		status	0x064100d8	int [10]
+		target	0x06410100	int [10]
		subsys_index	0	int
		subsys_count	1	int
		initial_velocity	33	int
		initial_hull	100	int
		initial_shields	100	int
		arrival_location	0	int
		arrival_distance	0	int
		arrival_anchor	-1	int
		arrival_path_mask	0	int
		arrival_cue	0	int
		arrival_delay	0	int
		departure_location	0	int
		departure_anchor	-1	int
		departure_path_mask	0	int
		departure_cue	0	int
		departure_delay	0	int
+		misc	0x06410168 "��������������������������������"	char [32]
		wingnum	0	int
		pos_in_wing	0	int
		flags	65	int
		flags2	0	int
		escort_priority	0	int
		ai_class	3	int
		hotkey	-1	int
		score	10	int
		assist_score_pct	0.00000000	float
		orders_accepted	-858993460	int
+		dock_list	0x00000000 {next=??? dockpoint_used=0x00000004 <Bad Ptr> docked_objp=??? }	p_dock_instance *
+		created_object	0x0117710c {next=0x01072d20 prev=0x01072d20 signature=3842 ...}	object *
		group	0	int
		persona_index	0	int
		kamikaze_damage	-1.0737418e+008	float
		use_special_explosion	false	bool
		special_exp_damage	-1	int
		special_exp_blast	-1	int
		special_exp_inner	-1	int
		special_exp_outer	-1	int
		use_shockwave	false	bool
		special_exp_shockwave_speed	0	int
		special_hitpoints	0	int
		special_shield	-1	int
		net_signature	22	unsigned short
		destroy_before_mission_time	-1	int
		wing_status_wing_index	0	char
		wing_status_wing_pos	0	char
		respawn_count	0	unsigned int
		respawn_priority	0	int
		alt_type_index	-1 '�'	char
		callsign_index	-1 '�'	char
		ship_max_hull_strength	275.00000	float
		ship_max_shield_strength	610.00000	float
		num_texture_replacements	0	int
+		replacement_textures	0x0641020c {ship_name=0x0641020c "" old_texture=0x0641022c "" new_texture=0x0641024c "" ...}	texture_replace [320]
+		alt_classes	{...}	SCP_vector<alt_class>
+		alt_iff_color	0x06417f24	int [10][10]


Autos up 3 levels:

-		&Net_players	0x022bf340 struct net_player * Net_players	net_player [12]*
-		[0]	{m_player=0x0151c460 player_id=0 tracker_player_id=54031 ...}	net_player
+		m_player	0x0151c460 struct player * Players {callsign=0x0151c460 "server" short_callsign=0x0151c47d "Standalone" short_callsign_width=0 ...}	player *
		player_id	0	short
		tracker_player_id	54031	int
		flags	5127	int
		state	10	int
		reliable_socket	4294967295	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	0	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x00000000 team=0 ship_index=-1 ...}	net_player_info
		sv_bytes_sent	0	int
		sv_last_pl	-1	int
		cl_bytes_recvd	0	int
		cl_last_pl	-1	int
-		[1]	{m_player=0x0151efd4 player_id=1 tracker_player_id=34960 ...}	net_player
+		m_player	0x0151efd4 {callsign=0x0151efd4 "Psychoo" short_callsign=0x0151eff1 "Psychoo" short_callsign_width=57 ...}	player *
		player_id	1	short
		tracker_player_id	34960	int
		flags	6298657	int
		state	10	int
		reliable_socket	1	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	1990429573	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x06410040 team=0 ship_index=0 ...}	net_player_info
		sv_bytes_sent	4820	int
		sv_last_pl	0	int
		cl_bytes_recvd	7037	int
		cl_last_pl	0	int
-		[2]	{m_player=0x01521b48 player_id=2 tracker_player_id=65516 ...}	net_player
+		m_player	0x01521b48 {callsign=0x01521b48 "Kszyhu" short_callsign=0x01521b65 "Kszyhu" short_callsign_width=48 ...}	player *
		player_id	2	short
		tracker_player_id	65516	int
		flags	6296577	int
		state	10	int
		reliable_socket	2	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	1990429573	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x0642819c team=0 ship_index=4 ...}	net_player_info
		sv_bytes_sent	4093	int
		sv_last_pl	6	int
		cl_bytes_recvd	2887	int
		cl_last_pl	0	int
+		[3]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[4]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[5]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[6]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[7]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[8]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[9]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[10]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[11]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
-		&Net_players[player_index]	0x022bfb48 {m_player=0x0151efd4 player_id=1 tracker_player_id=34960 ...}	net_player *
+		m_player	0x0151efd4 {callsign=0x0151efd4 "Psychoo" short_callsign=0x0151eff1 "Psychoo" short_callsign_width=57 ...}	player *
		player_id	1	short
		tracker_player_id	34960	int
		flags	6298657	int
		state	10	int
		reliable_socket	1	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	1990429573	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x06410040 team=0 ship_index=0 ...}	net_player_info
		sv_bytes_sent	4820	int
		sv_last_pl	0	int
		cl_bytes_recvd	7037	int
		cl_last_pl	0	int
-		Net_players	0x022bf340 struct net_player * Net_players {m_player=0x0151c460 player_id=0 tracker_player_id=54031 ...}	net_player [12]
-		[0]	{m_player=0x0151c460 player_id=0 tracker_player_id=54031 ...}	net_player
+		m_player	0x0151c460 struct player * Players {callsign=0x0151c460 "server" short_callsign=0x0151c47d "Standalone" short_callsign_width=0 ...}	player *
		player_id	0	short
		tracker_player_id	54031	int
		flags	5127	int
		state	10	int
		reliable_socket	4294967295	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	0	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x00000000 team=0 ship_index=-1 ...}	net_player_info
		sv_bytes_sent	0	int
		sv_last_pl	-1	int
		cl_bytes_recvd	0	int
		cl_last_pl	-1	int
-		[1]	{m_player=0x0151efd4 player_id=1 tracker_player_id=34960 ...}	net_player
+		m_player	0x0151efd4 {callsign=0x0151efd4 "Psychoo" short_callsign=0x0151eff1 "Psychoo" short_callsign_width=57 ...}	player *
		player_id	1	short
		tracker_player_id	34960	int
		flags	6298657	int
		state	10	int
		reliable_socket	1	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	1990429573	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x06410040 team=0 ship_index=0 ...}	net_player_info
		sv_bytes_sent	4820	int
		sv_last_pl	0	int
		cl_bytes_recvd	7037	int
		cl_last_pl	0	int
-		[2]	{m_player=0x01521b48 player_id=2 tracker_player_id=65516 ...}	net_player
+		m_player	0x01521b48 {callsign=0x01521b48 "Kszyhu" short_callsign=0x01521b65 "Kszyhu" short_callsign_width=48 ...}	player *
		player_id	2	short
		tracker_player_id	65516	int
		flags	6296577	int
		state	10	int
		reliable_socket	2	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	1990429573	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x0642819c team=0 ship_index=4 ...}	net_player_info
		sv_bytes_sent	4093	int
		sv_last_pl	6	int
		cl_bytes_recvd	2887	int
		cl_last_pl	0	int
+		[3]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[4]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[5]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[6]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[7]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[8]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[9]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[10]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
+		[11]	{m_player=0x00000000 player_id=0 tracker_player_id=0 ...}	net_player
-		Net_players[player_index]	{m_player=0x0151efd4 player_id=1 tracker_player_id=34960 ...}	net_player
+		m_player	0x0151efd4 {callsign=0x0151efd4 "Psychoo" short_callsign=0x0151eff1 "Psychoo" short_callsign_width=57 ...}	player *
		player_id	1	short
		tracker_player_id	34960	int
		flags	6298657	int
		state	10	int
		reliable_socket	1	unsigned int
		client_cinfo_seq	0	unsigned short
		client_server_seq	0	unsigned short
		last_heard_time	1990429573	long
+		s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		p_info	{p_objp=0x06410040 team=0 ship_index=0 ...}	net_player_info
		sv_bytes_sent	4820	int
		sv_last_pl	0	int
		cl_bytes_recvd	7037	int
		cl_last_pl	0	int
-		Net_players[player_index].p_info	{p_objp=0x06410040 team=0 ship_index=0 ...}	net_player_info
+		p_objp	0x06410040 {name=0x06410040 "Alpha 1" next=0x064180b4 prev=0x01016fc8 ...}	p_object *
		team	0	int
		ship_index	0	int
		ship_class	7	int
+		options	{flags=5 obj_update_level=0 }	multi_local_options
+		addr	{type=1 net_id=0x022c0310 "����Sɢ" addr=0x022c0314 "Sɢ" ...}	net_addr
+		pxo_squad_name	0x022c031c "Squadron 303"	char [33]
-		Net_players[player_index].p_info.p_objp	0x06410040 {name=0x06410040 "Alpha 1" next=0x064180b4 prev=0x01016fc8 ...}	p_object *
+		name	0x06410040 "Alpha 1"	char [32]
+		next	0x064180b4 {name=0x064180b4 "Alpha 2" next=0x06420128 prev=0x06410040 ...}	p_object *
+		prev	0x01016fc8 struct p_object Ship_arrival_list {name=0x01016fc8 "" next=0x06410040 prev=0x064b0950 ...}	p_object *
+		pos	{xyz={...} a1d=0x06410068 }	vec3d
+		orient	{vec={...} a2d=0x06410074 a1d=0x06410074 }	matrix
		ship_class	7	int
		team	0	int
		behavior	9	int
		ai_goals	-1	int
		cargo1	0	char
		status_count	0	int
+		status_type	0x064100b0	int [10]
+		status	0x064100d8	int [10]
+		target	0x06410100	int [10]
		subsys_index	0	int
		subsys_count	1	int
		initial_velocity	33	int
		initial_hull	100	int
		initial_shields	100	int
		arrival_location	0	int
		arrival_distance	0	int
		arrival_anchor	-1	int
		arrival_path_mask	0	int
		arrival_cue	0	int
		arrival_delay	0	int
		departure_location	0	int
		departure_anchor	-1	int
		departure_path_mask	0	int
		departure_cue	0	int
		departure_delay	0	int
+		misc	0x06410168 "��������������������������������"	char [32]
		wingnum	0	int
		pos_in_wing	0	int
		flags	65	int
		flags2	0	int
		escort_priority	0	int
		ai_class	3	int
		hotkey	-1	int
		score	10	int
		assist_score_pct	0.00000000	float
		orders_accepted	-858993460	int
+		dock_list	0x00000000 {next=??? dockpoint_used=0x00000004 <Bad Ptr> docked_objp=??? }	p_dock_instance *
+		created_object	0x0117710c {next=0x01072d20 prev=0x01072d20 signature=3842 ...}	object *
		group	0	int
		persona_index	0	int
		kamikaze_damage	-1.0737418e+008	float
		use_special_explosion	false	bool
		special_exp_damage	-1	int
		special_exp_blast	-1	int
		special_exp_inner	-1	int
		special_exp_outer	-1	int
		use_shockwave	false	bool
		special_exp_shockwave_speed	0	int
		special_hitpoints	0	int
		special_shield	-1	int
		net_signature	22	unsigned short
		destroy_before_mission_time	-1	int
		wing_status_wing_index	0	char
		wing_status_wing_pos	0	char
		respawn_count	0	unsigned int
		respawn_priority	0	int
		alt_type_index	-1 '�'	char
		callsign_index	-1 '�'	char
		ship_max_hull_strength	275.00000	float
		ship_max_shield_strength	610.00000	float
		num_texture_replacements	0	int
+		replacement_textures	0x0641020c {ship_name=0x0641020c "" old_texture=0x0641022c "" new_texture=0x0641024c "" ...}	texture_replace [320]
+		alt_classes	{...}	SCP_vector<alt_class>
+		alt_iff_color	0x06417f24	int [10][10]
+		Net_players[player_index].p_info.p_objp->name	0x06410040 "Alpha 1"	char [32]
-		Net_players[player_index].s_info	{ping={...} wing_index_backup=0 wing_index=0 ...}	net_player_server_info
+		ping	{ping_start=30369.713 ping_times=0x022bfb6c num_pings=10 ...}	ping_struct
		wing_index_backup	0	int
		wing_index	0	int
		ingame_join_flags	0	int
		invul_timestamp	1791169	int
+		last_buttons	0x022bfbb0 {status=0x022bfbb0 }	button_info [30]
+		last_buttons_id	0x022bfd90	int [30]
+		last_buttons_time	0x022bfe08	long [30]
		num_last_buttons	0	int
		last_full_update_time	1	long
		xfer_handle	-1	int
		kick_timestamp	-1	int
		kick_reason	0	int
		voice_token_timestamp	-1	int
		reliable_connect_time	-1	int
		cur_primary_bank	1 ''	char
		cur_secondary_bank	0	char
		cur_link_status	3 ''	unsigned char
+		eye_pos	{xyz={...} a1d=0x022bfea0 }	vec3d
+		eye_orient	{vec={...} a2d=0x022bfeac a1d=0x022bfeac }	matrix
		ship_ets	1092	unsigned short
		tracker_security_last	-1	int
		tracker_checksum	0	unsigned int
		target_objnum	937	int
		rate_stamp	1979767	int
		rate_bytes	1087	int
		accum_buttons	0	unsigned char
+		unreliable_buffer	0x022bfee9 "�"	unsigned char [512]
		unreliable_buffer_size	0	int
+		reliable_buffer	0x022c00f0 "�"	unsigned char [512]
		reliable_buffer_size	29	int
		Net_players[player_index].s_info.cur_link_status	3 ''	unsigned char
		Net_players[player_index].s_info.cur_primary_bank	1 ''	char
		Net_players[player_index].s_info.cur_secondary_bank	0	char
		Net_players[player_index].s_info.ship_ets	1092	unsigned short
		player_index	1	int
hull_over_100.txt (111,408 bytes)   

2010-10-14 20:17

 

hull_over_100.rar (391,787 bytes)

The_E

2010-11-11 08:41

administrator   ~0012447

Why are we asserting there, when we can simply CLAMP() the values to valid ranges? In this case, it looks to me like a case of float imprecision.

Fix committed in revision 6724

The_E

2010-11-11 09:51

administrator   ~0012448

Reopening, as this does not address the root cause.

Judging by what is printed in the log and callstack, the Objects[] and Ships[] arrays seem to have gotten out of sync somehow. Note that I couldn't reproduce this in single player.

Goober5000

2010-11-14 02:20

administrator   ~0012461

We're asserting there because those values should never be outside the range in those locations. :p

It's not a bad thing to have Assert and Int3 in the codebase. They indicate a failure of design-by-contract, i.e. a bug in the actual program, in contrast to Warning or Error which indicate bugs caused by invalid game data.

The_E

2010-11-14 03:56

administrator   ~0012462

Yeah, I know, Which is why I reverted it.

FUBAR-BDHR

2010-11-14 03:56

developer   ~0012463

And I know which is why I told him the problem was deeper the he though.

FUBAR-BDHR

2010-12-03 23:51

developer   ~0012499

Just had it happen with shields as well which is around 13 lines later. Pretty much identical other then hull vs shields.

chief1983

2011-01-12 22:03

administrator   ~0012595

Is r6429 not a likely culprit for this? It was committed only a month and a half before this bug was filed. After seeing FUBAR's comments in IRC today:

[15:46] <FUBAR> it seems to happen anytime the player chooses a ship other then default
[15:47] <FUBAR> respawns and it appears to try to calculate hull strength based on the original ship not the one he selected in loadout
[15:47] <FUBAR> which at respawn do we even care about anything besides special hits? You have a brand new ship it should be at 100%
[15:48] <FUBAR> and if it gets by that it crashes on shields down below

Then seeing the commit message:
"maintain the original hull, shield, and subsystem percentages when changing ship class, since we might be changing it from a briefing loadout (Mantis 0002301)"

This seems a bit too coincidental to ignore. Goober, you want to take another look at that commit maybe?

FUBAR-BDHR

2011-01-12 22:27

developer   ~0012596

OK the rabbit hole runs deep on this one. I couldn't understand why it wasn't happening in single so I made a simple test mission. Alpha and Beta wings with beta being 4 Uly by default. I changed them to 4 different ships and let them get slaughtered by a few dozen Maras. Beta respawed as all Uly instead of the ships they were assigned in loadout. That explains why no one hits it in single. Another bug.

Goober5000

2011-04-11 01:02

administrator   ~0012655

I just looked at r6429 and I couldn't figure out any way for it to cause this error. The timing fits, but the code logic seems bulletproof. Changing a class while respawning should have exactly the same effect as changing a class in the team loadout.

Now it could be the case that FUBAR's latest note, 0012596, is the true cause of the bug, and that my commit simply opened a way for it to manifest. In that case we'd have to track down the original bug.

It sounds like someone would have to do some debugging during an active multi session. Either that, or run a build with some logging statements to print out hull and ship class values.

2011-06-21 21:47

 

2326.patch (6,129 bytes)   
Index: code/mission/missionparse.cpp
===================================================================
--- code/mission/missionparse.cpp	(revision 7264)
+++ code/mission/missionparse.cpp	(working copy)
@@ -1820,8 +1820,8 @@
 	}
 
 	// Goober5000
-	shipp->ship_max_shield_strength = p_objp->ship_max_shield_strength;
-	shipp->ship_max_hull_strength = p_objp->ship_max_hull_strength;
+	shipp->ship_max_shield_strength = Ship_info[shipp->ship_info_index].max_shield_strength * p_objp->ship_max_shield_strength;
+	shipp->ship_max_hull_strength =  Ship_info[shipp->ship_info_index].max_hull_strength * p_objp->ship_max_hull_strength;
 
 	// Goober5000 - ugh, this is really stupid having to do this here; if the
 	// ship creation code was better organized this wouldn't be necessary
@@ -2905,17 +2905,17 @@
 
 	// set max hitpoint and shield values		
 	if (p_objp->special_shield != -1) {
-		p_objp->ship_max_shield_strength = (float) p_objp->special_shield; 
+		p_objp->ship_max_shield_strength = (float) p_objp->special_shield / Ship_info[p_objp->ship_class].max_shield_strength; 
 	}
 	else {
-		p_objp->ship_max_shield_strength = Ship_info[p_objp->ship_class].max_shield_strength;
+		p_objp->ship_max_shield_strength = 1.0f;
 	}
 		
 	if (p_objp->special_hitpoints > 0) {
-		p_objp->ship_max_hull_strength = (float) p_objp->special_hitpoints; 
+		p_objp->ship_max_hull_strength = (float) p_objp->special_hitpoints / Ship_info[p_objp->ship_class].max_hull_strength; 
 	}
 	else {
-		p_objp->ship_max_hull_strength = Ship_info[p_objp->ship_class].max_hull_strength;
+		p_objp->ship_max_hull_strength = 1.0f;
 	}
 
 	Assert(p_objp->ship_max_hull_strength > 0.0f);	// Goober5000: div-0 check (not shield because we might not have one)
@@ -3539,28 +3539,28 @@
 	// Hitpoints
 	// We need to take into account that the ship might have been assigned special hitpoints so we can't 
 	// simply swap old for new. 
-	Assert (p_obj->ship_max_hull_strength > 0);
-	Assert (old_ship_info->max_hull_strength > 0);
+	Assert (p_obj->ship_max_hull_strength > 0.0f);
+	Assert (old_ship_info->max_hull_strength > 0.0f);
 	
-	float hp_multiplier = p_obj->ship_max_hull_strength / old_ship_info->max_hull_strength;
-	p_obj->ship_max_hull_strength = new_ship_info->max_hull_strength * hp_multiplier;
+	float hp_multiplier = (Ship_info[p_obj->ship_class].max_hull_strength * p_obj->ship_max_hull_strength) / old_ship_info->max_hull_strength;
+	p_obj->ship_max_hull_strength = (new_ship_info->max_hull_strength * hp_multiplier) / new_ship_info->max_hull_strength;
 
 
 	// Shields
 	// Again we have to watch out for special hitpoints but this time we can't assume that there will be a 
 	// shield. So first lets see if there is one. 
-	if ((p_obj->ship_max_shield_strength != old_ship_info->max_shield_strength) && 
-		(p_obj->ship_max_shield_strength > 0) &&
-		(new_ship_info->max_shield_strength > 0))
+	if ((p_obj->ship_max_shield_strength != 1.0f) && 
+		(p_obj->ship_max_shield_strength > 0.0f) &&
+		(new_ship_info->max_shield_strength > 0.0f))
 	{
 		// This ship is using special hitpoints to alter the shield strength
 		float shield_multiplier = p_obj->ship_max_shield_strength / i2fl(old_ship_info->max_shield_strength);
-		p_obj->ship_max_shield_strength = new_ship_info->max_shield_strength * shield_multiplier;
+		p_obj->ship_max_shield_strength = (new_ship_info->max_shield_strength * shield_multiplier) / new_ship_info->max_shield_strength;
 	}
 	// Not using special hitpoints or a class which has a shield strength of zero
 	else
 	{
-		p_obj->ship_max_shield_strength = new_ship_info->max_shield_strength;
+		p_obj->ship_max_shield_strength = 1.0f;
 	}
 	
 	// Primary weapons
@@ -6092,7 +6092,7 @@
 
 	for (p_objp = GET_FIRST(&Ship_arrival_list); p_objp != END_OF_LIST(&Ship_arrival_list); p_objp = GET_NEXT(p_objp))
 	{
-		if (!stricmp(p_objp->name, name))
+		if (!stricmp(p_objp->name, name)) 
 			return p_objp;	// still on the arrival list
 	}
 
@@ -7245,8 +7245,8 @@
 	}
 
 	// set support ship hitpoints
-	pobj->ship_max_hull_strength = Ship_info[i].max_hull_strength;
-	pobj->ship_max_shield_strength = Ship_info[i].max_shield_strength;
+	pobj->ship_max_hull_strength = 1.0f;
+	pobj->ship_max_shield_strength = 1.0f;
 
 	pobj->team = requester_shipp->team;
 
Index: code/mission/missionparse.h
===================================================================
--- code/mission/missionparse.h	(revision 7264)
+++ code/mission/missionparse.h	(working copy)
@@ -430,8 +430,8 @@
 	int		alt_type_index;					// optional alt type index
 	int		callsign_index;					// optional callsign index
 
-	float ship_max_hull_strength;
-	float ship_max_shield_strength;
+	float ship_max_hull_strength;			// Expressed as percentages of actual hull value
+	float ship_max_shield_strength;			//
 
 	// Goober5000
 	int num_texture_replacements;
@@ -525,8 +525,8 @@
 		alt_type_index = 0;
 		callsign_index = 0;
 
-		ship_max_hull_strength = 0.;
-		ship_max_shield_strength = 0.;
+		ship_max_hull_strength = 0.0f;
+		ship_max_shield_strength = 0.0f;
 
 		num_texture_replacements = 0;
 		
Index: code/parse/sexp.cpp
===================================================================
--- code/parse/sexp.cpp	(revision 7264)
+++ code/parse/sexp.cpp	(working copy)
@@ -14750,11 +14750,11 @@
 
 	// copy hull...
 	target_pobjp->special_hitpoints = source_shipp->special_hitpoints;
-	target_pobjp->ship_max_hull_strength = source_shipp->ship_max_hull_strength;
+	target_pobjp->ship_max_hull_strength = source_shipp->ship_max_hull_strength / Ship_info[source_shipp->ship_info_index].max_hull_strength;
 	target_pobjp->initial_hull = fl2i(get_hull_pct(source_objp) * 100.0f);
 
 	// ...and shields
-	target_pobjp->ship_max_shield_strength = source_shipp->ship_max_shield_strength;
+	target_pobjp->ship_max_shield_strength = source_shipp->ship_max_shield_strength / Ship_info[source_shipp->ship_info_index].max_shield_strength;
 	target_pobjp->initial_shields = fl2i(get_shield_pct(source_objp) * 100.0f);
 
 
2326.patch (6,129 bytes)   

The_E

2011-06-21 21:57

administrator   ~0012721

Okay, had another look at this. While trying to debug this with Zacam, I had an idea about how this came to be. One thing I noticed was that while playing NWTR, if I chose a Herc instead of the default Uly, my HP were knocked back to 72% upon respawn. Given that a Uly has exactly 72% of the hitpoints of a Herc, this could not be a coincidence.

So, I dug around a bit, and stumbled across something interesting. parse_object::ship_max_shield_strength and ship_max_hull_strength were defined as absolute values, and were never changed after the initial parsing. So, I wrote the attached patch, which changes both values to multipliers. This had the desired effect of getting correct health values again.

It should be noted that we didn't trigger the assertion mentioned in the bug report here, I hope we won't with the patch attached. Further testing required.

The_E

2011-06-25 08:04

administrator   ~0012726

Committed to trunk in 7268. See discussion on internal.

FUBAR-BDHR

2012-11-30 05:03

developer   ~0014233

Seems this issue has awaken from the dead. I ran into the shield version of it trying to test another issue in TBP. Tested that with modified retail data and it was reproducible. Tried with hull and that still exists as well.

Very easy to reproduce. Quick edit to ships.tbl to change a herc's hitpoints to a low value like 25 or shields to 20. Load up FRED, add a herc, go to ships editor, change ship class from herc to uly and watch the assert.

Cut and paste if you want a .tbm instead:

#Ship Classes
$Name: GTF Hercules
+nocreate
$Hitpoints: 25
;;$Shields: 20

#End

The_E

2012-12-01 17:13

administrator   ~0014242

Actually, it's a completely different issue that looks slightly similar, but whatever.

The_E

2012-12-01 17:32

administrator   ~0014243

I've attached another patch that should address this.

The_E

2012-12-01 17:32

administrator  

2326-2.patch (2,252 bytes)   
Index: code/ship/ship.cpp
===================================================================
--- code/ship/ship.cpp	(revision 9385)
+++ code/ship/ship.cpp	(working copy)
@@ -8972,32 +8972,37 @@
 
 
 	// Goober5000 - maintain the original hull, shield, and subsystem percentages... gah
+	// ...except when in FRED, because this stuff is handled in the missionparse/missionsave part. The E
 
-	// hull
-	if (sp->special_hitpoints) {
-		hull_pct = objp->hull_strength / sp->ship_max_hull_strength; 
-	} else {
-		Assert( Ship_info[sp->ship_info_index].max_hull_strength > 0.0f );
-		hull_pct = objp->hull_strength / Ship_info[sp->ship_info_index].max_hull_strength;
-	}
+	if (!Fred_running) {
+		// hull
+		if (sp->special_hitpoints) {
+			hull_pct = objp->hull_strength / sp->ship_max_hull_strength; 
+		} else {
+			Assert( Ship_info[sp->ship_info_index].max_hull_strength > 0.0f );
+			hull_pct = objp->hull_strength / Ship_info[sp->ship_info_index].max_hull_strength;
+		}
 
-	// extra check
-	Assert(hull_pct > 0.0f && hull_pct <= 1.0f);
-    CLAMP(hull_pct, 0.1f, 1.0f);
+		// extra check
+		Assert(hull_pct > 0.0f && hull_pct <= 1.0f);
+		CLAMP(hull_pct, 0.1f, 1.0f);
 
-	// shield
-	if (sp->special_shield > 0) {
-		shield_pct = shield_get_strength(objp) / sp->ship_max_shield_strength;
-	} else if (Ship_info[sp->ship_info_index].max_shield_strength > 0.0f) {
-		shield_pct = shield_get_strength(objp) / Ship_info[sp->ship_info_index].max_shield_strength;
+		// shield
+		if (sp->special_shield > 0) {
+			shield_pct = shield_get_strength(objp) / sp->ship_max_shield_strength;
+		} else if (Ship_info[sp->ship_info_index].max_shield_strength > 0.0f) {
+			shield_pct = shield_get_strength(objp) / Ship_info[sp->ship_info_index].max_shield_strength;
+		} else {
+			shield_pct = 0.0f;
+		}
+
+		// extra check
+		Assert(shield_pct >= 0.0f && shield_pct <= 1.0f);
+		CLAMP(shield_pct, 0.0f, 1.0f);
 	} else {
-		shield_pct = 0.0f;
+		shield_pct = hull_pct = 1.0f;
 	}
 
-	// extra check
-	Assert(shield_pct >= 0.0f && shield_pct <= 1.0f);
-    CLAMP(shield_pct, 0.0f, 1.0f);
-
 	// subsystems
 	int num_saved_subsystems = 0;
 	char **subsys_names = new char *[sip_orig->n_subsystems];
2326-2.patch (2,252 bytes)   

FUBAR-BDHR

2012-12-02 00:13

developer   ~0014244

So 2 separate bugs on the same 2 asserts.

Anyway patch seems to work just fine.

Goober5000

2012-12-02 05:03

administrator   ~0014248

Looks fine code-wise too. Go ahead and commit/resolve.

The_E

2012-12-02 09:55

administrator   ~0014257

FUBAR: The original issue was abo9ut something going wrong when parsing a mission file and adapting the parsed data to what the player(s) were actually using. This new crash, although it had the same assert, actually happened in a different part of the code (ship.cpp vs missionparse.cpp), for different reasons.

Goober5000

2013-01-16 06:17

administrator   ~0014651

Last edited: 2013-01-16 07:31

Reopening due to my change plus FUBAR's report...

01:22:54 FUBAR: GOOBER!!!!! I just got a stanalone crash in change_ship_class!!!!!!!
01:25:01 FUBAR|away2__: r9503
01:25:51 FUBAR|away2__: got a 275/250 for a hull_pct of 1.1
01:26:14 FUBAR|away2__: line 8995
01:28:58 FUBAR|away2__: second ship is a loki
01:31:38 FUBAR|away2__: trainingmt-12.fs2 (you probably don't have that)
01:32:44 FUBAR|away2__: Received respawn request ASSERTION: "hull_pct > 0.0f && hull_pct <= 1.0f" at ship.cpp:8995 Int3(): From c:\fs2_open\code\globalincs\windebug.cpp at line 963
01:33:47 FUBAR|away2__: there were at least 2 ships destroyed in those few frames so not certain which one it was
01:35:55 FUBAR|away2__: default player starts are herc2's
01:42:12 FUBAR|away2__: crash was on alpha 1 but not sure if alpha 1 was hosting or client as that mission has alpha 2 as wing leader
01:47:23 FUBAR|away2__: looks like shields would have asserted to with a 410/400 if it had got that far
01:48:39 FUBAR|away2__: sorry 610/400 apparently I can't multiply by 4 correctly anymore

02:26:28 FUBAR: alpha 1
02:32:41 FUBAR: loki
02:54:58 FUBAR: reproducable on a standalone even with 1 player
02:55:20 FUBAR: m-01 just started with a uly instead of a herc2

FUBAR-BDHR

2013-01-16 06:30

developer  

2326_new.rar (78,349 bytes)

Goober5000

2013-01-30 06:19

administrator   ~0014668

Fix committed to trunk@9515.

Goober5000

2013-01-30 06:20

administrator   ~0014669

Last edited: 2013-01-30 06:52

For some reason, client parse objects already have the correct ship class of the ship they're respawning into. That seems to be causing trouble with change_ship_type, although upon reflection it really shouldn't. Nevertheless, skipping the ship class change seems to fix it. (Strangely, server parse objects retain their parsed ship class as expected.)

EDIT: For posterity, the problem in change_ship_type is most likely due to the parse object's ship_class being assigned to the new class, while its ship_max_hull_strength (and ship_max_shield_strength, and who knows what else) stayed at the original, parsed values.

Goober5000

2013-01-30 06:20

administrator   ~0014670

Assigning to The_E because he fixed two out of three bugs this ticket actually references.

Goober5000

2013-01-30 07:19

administrator   ~0014671

This deserves another ticket. See 0002783.

Related Changesets

fs2open: trunk r7268

2011-06-25 04:03

The_E


Ported: N/A

Details Diff
Patch for Mantis 2326: Standalone server crashes when ship classes are changed in loadout.
I hope.
Affected Issues
0002326
mod - /trunk/fs2_open/code/mission/missionparse.cpp Diff File
mod - /trunk/fs2_open/code/mission/missionparse.h Diff File
mod - /trunk/fs2_open/code/parse/sexp.cpp Diff File

fs2open: trunk r9502

2013-01-13 04:28

Goober5000


Ported: N/A

Details Diff
return special_hitpoints to using a specific value instead of a multiplier;
this was extensively tested in both single-player and multiplayer, using change-ship-class and changing ship loadout, against ships both higher and lower in hitpoints, to ensure it didn't re-break Mantis 0002326
Affected Issues
0002326
mod - /trunk/fs2_open/code/mission/missionparse.cpp Diff File
mod - /trunk/fs2_open/code/mission/missionparse.h Diff File
mod - /trunk/fs2_open/code/parse/sexp.cpp Diff File

fs2open: trunk r9515

2013-01-30 01:56

Goober5000


Ported: N/A

Details Diff
this ought to fix Mantis 0002326 Affected Issues
0002326, 0002783
mod - /trunk/fs2_open/code/ship/ship.cpp Diff File

Issue History

Date Modified Username Field Change
2010-10-14 20:17 FUBAR-BDHR New Issue
2010-10-14 20:17 FUBAR-BDHR File Added: hull_over_100.txt
2010-10-14 20:17 FUBAR-BDHR File Added: hull_over_100.rar
2010-11-11 08:41 The_E Note Added: 0012447
2010-11-11 08:41 The_E Status new => resolved
2010-11-11 08:41 The_E Fixed in Version => 3.6.13
2010-11-11 08:41 The_E Resolution open => fixed
2010-11-11 08:41 The_E Assigned To => The_E
2010-11-11 09:51 The_E Note Added: 0012448
2010-11-11 09:51 The_E Status resolved => feedback
2010-11-11 09:51 The_E Resolution fixed => reopened
2010-11-11 09:51 The_E Status feedback => assigned
2010-11-14 02:20 Goober5000 Note Added: 0012461
2010-11-14 03:56 The_E Note Added: 0012462
2010-11-14 03:56 FUBAR-BDHR Note Added: 0012463
2010-12-03 23:51 FUBAR-BDHR Note Added: 0012499
2011-01-12 22:03 chief1983 Note Added: 0012595
2011-01-12 22:27 FUBAR-BDHR Note Added: 0012596
2011-01-12 22:31 FUBAR-BDHR Relationship added related to 0002378
2011-03-31 17:26 chief1983 Fixed in Version 3.6.13 =>
2011-03-31 17:26 chief1983 Target Version => 3.6.14
2011-04-11 01:02 Goober5000 Note Added: 0012655
2011-05-25 16:54 chief1983 Priority normal => urgent
2011-06-21 21:47 The_E File Added: 2326.patch
2011-06-21 21:57 The_E Note Added: 0012721
2011-06-25 08:04 The_E Note Added: 0012726
2011-06-25 08:04 The_E Status assigned => resolved
2011-06-25 08:04 The_E Fixed in Version => 3.6.13
2011-06-25 08:04 The_E Resolution reopened => fixed
2011-09-14 09:29 karajorma Status resolved => assigned
2011-09-14 09:29 karajorma Assigned To The_E => karajorma
2011-09-14 11:24 The_E Assigned To karajorma => The_E
2011-09-14 11:24 The_E Status assigned => resolved
2012-11-30 05:03 FUBAR-BDHR Note Added: 0014233
2012-11-30 05:03 FUBAR-BDHR Status resolved => feedback
2012-11-30 05:03 FUBAR-BDHR Resolution fixed => reopened
2012-12-01 17:13 The_E Note Added: 0014242
2012-12-01 17:31 The_E Status feedback => assigned
2012-12-01 17:32 The_E Note Added: 0014243
2012-12-01 17:32 The_E Status assigned => code review
2012-12-01 17:32 The_E File Added: 2326-2.patch
2012-12-02 00:13 FUBAR-BDHR Note Added: 0014244
2012-12-02 05:03 Goober5000 Note Added: 0014248
2012-12-02 09:55 The_E Note Added: 0014257
2012-12-02 09:55 The_E Status code review => resolved
2012-12-02 09:55 The_E Resolution reopened => fixed
2013-01-13 08:51 Goober5000 Changeset attached => fs2open trunk r9502
2013-01-13 09:00 Goober5000 Changeset attached => fs2open trunk r7268
2013-01-16 06:17 Goober5000 Note Added: 0014651
2013-01-16 06:17 Goober5000 Assigned To The_E => Goober5000
2013-01-16 06:17 Goober5000 Status resolved => assigned
2013-01-16 06:17 Goober5000 Resolution fixed => reopened
2013-01-16 06:30 FUBAR-BDHR File Added: 2326_new.rar
2013-01-16 06:58 Goober5000 Note Edited: 0014651
2013-01-16 07:31 Goober5000 Note Edited: 0014651
2013-01-30 06:19 Goober5000 Changeset attached => fs2open trunk r9515
2013-01-30 06:19 Goober5000 Note Added: 0014668
2013-01-30 06:19 Goober5000 Status assigned => resolved
2013-01-30 06:20 Goober5000 Note Added: 0014669
2013-01-30 06:20 Goober5000 Note Added: 0014670
2013-01-30 06:20 Goober5000 Assigned To Goober5000 => The_E
2013-01-30 06:47 Goober5000 Note Edited: 0014669
2013-01-30 06:52 Goober5000 Note Edited: 0014669
2013-01-30 07:19 Goober5000 Note Added: 0014671
2013-01-30 07:19 Goober5000 Relationship added related to 0002783