Index: code/ai/aiturret.cpp
===================================================================
--- code/ai/aiturret.cpp	(revision 9439)
+++ code/ai/aiturret.cpp	(working copy)
@@ -1814,6 +1814,7 @@
 
 				objp=&Objects[weapon_objnum];
 				wp=&Weapons[objp->instance];
+				wip=&Weapon_info[wp->weapon_info_index];
 
 				//nprintf(("AI", "Turret_time_enemy_in_range = %7.3f\n", ss->turret_time_enemy_in_range));		
 				if (weapon_objnum != -1) {
Index: code/network/multimsgs.cpp
===================================================================
--- code/network/multimsgs.cpp	(revision 9439)
+++ code/network/multimsgs.cpp	(working copy)
@@ -3328,6 +3328,8 @@
 	}
 
 	weapon_objnum = weapon_create( &pos, &orient, wid, OBJ_INDEX(objp), -1, 1, 0, 0.0f, ssp);
+	wid = Weapons[Objects[weapon_objnum].instance].weapon_info_index;
+
 	if (weapon_objnum != -1) {
 		if ( Weapon_info[wid].launch_snd != -1 ) {
 			snd_play_3d( &Snds[Weapon_info[wid].launch_snd], &pos, &View_position );
@@ -8384,6 +8386,7 @@
 
 	// create the weapon object	
 	weapon_objnum = weapon_create( &pos, &orient, wid, OBJ_INDEX(objp), -1, 1, 0, 0.0f, ssp);
+	wid = Weapons[Objects[weapon_objnum].instance].weapon_info_index;
 	if (weapon_objnum != -1) {
 		if ( Weapon_info[wid].launch_snd != -1 ) {
 			snd_play_3d( &Snds[Weapon_info[wid].launch_snd], &pos, &View_position );
Index: code/ship/ship.cpp
===================================================================
--- code/ship/ship.cpp	(revision 9439)
+++ code/ship/ship.cpp	(working copy)
@@ -10295,6 +10295,7 @@
 							// of weapon_create							
 							weapon_objnum = weapon_create( &firing_pos, &firing_orient, weapon, OBJ_INDEX(obj), new_group_id, 
 								0, 0, swp->primary_bank_fof_cooldown[bank_to_fire] );
+							winfo_p = &Weapon_info[Weapons[Objects[weapon_objnum].instance].weapon_info_index];
 							has_fired = true;
 
 							weapon_set_tracking_info(weapon_objnum, OBJ_INDEX(obj), aip->target_objnum, aip->current_target_is_locked, aip->targeted_subsys);				
@@ -11030,6 +11031,7 @@
 			// create the weapon -- for multiplayer, the net_signature is assigned inside
 			// of weapon_create
 			weapon_num = weapon_create( &firing_pos, &firing_orient, weapon, OBJ_INDEX(obj), -1, aip->current_target_is_locked);
+			weapon = Weapons[Objects[weapon_num].instance].weapon_info_index;
 			weapon_set_tracking_info(weapon_num, OBJ_INDEX(obj), aip->target_objnum, aip->current_target_is_locked, aip->targeted_subsys);
 			has_fired = true;
 
