75 #ifdef _MULTI_SUPER_WACKY_COMPRESSION 
   77 #define MAX_CODE                   ( ( 1 << BITS ) - 1 ) 
   78 #define TABLE_SIZE                 35023L 
   79 #define END_OF_STREAM              256 
   81 #define FLUSH_CODE                 258 
   82 #define FIRST_CODE                 259 
   91 static DICTIONARY dict[TABLE_SIZE];
 
   92 static char decode_stack[TABLE_SIZE];
 
   93 static uint next_code;
 
   94 static int current_code_bits;
 
   95 static uint next_bump_code;
 
   97 typedef struct BitBuf {
 
  107     mask = 1L << ( count - 1 );
 
  110             bitbuf->rack |= bitbuf->mask;
 
  112         if ( bitbuf->mask == 0 ) {
 
  113                                 *bitbuf->data++=(
ubyte)bitbuf->rack;
 
  121 uint input_bits( BitBuf *bitbuf, 
int bit_count ) 
 
  126         mask = 1L << ( bit_count - 1 );
 
  129                 if ( bitbuf->mask == 0x80 ) {
 
  130                         bitbuf->rack = *bitbuf->data++;
 
  131                         if ( bitbuf->rack == EOF ) 
 
  132                                 return END_OF_STREAM;
 
  134                 if ( bitbuf->rack & bitbuf->mask )
 
  135                         return_value |= 
mask;
 
  138                 if ( bitbuf->mask == 0 )
 
  141         return( return_value );
 
  145 static void InitializeDictionary()
 
  149         for ( i = 0 ; i < TABLE_SIZE ; i++ )
 
  150                 dict[i].code_value = UNUSED;
 
  152         next_code = FIRST_CODE;
 
  153         current_code_bits = 9;
 
  154         next_bump_code = 511;
 
  158 static uint find_child_node( 
int parent_code, 
int child_character ) 
 
  163     index = ( child_character << ( BITS - 8 ) ) ^ parent_code;
 
  167         offset = TABLE_SIZE - 
index;
 
  169                 if ( dict[ index ].code_value == UNUSED )
 
  171                 if ( dict[ index ].parent_code == parent_code &&
 
  172                          dict[ index ].character == (
char) child_character )
 
  174         if ( (
int) index >= 
offset )
 
  177             index += TABLE_SIZE - 
offset;
 
  184     while ( code > 255 ) {
 
  185                 decode_stack[ count++ ] = dict[ 
code ].character;
 
  186                 code = dict[ 
code ].parent_code;
 
  188     decode_stack[ count++ ] = (char) code;
 
  192 int lzw_compress( 
ubyte *outputbuf, 
ubyte *inputbuf, 
int input_size ) 
 
  203         output.data = outputbuf;
 
  205         InitializeDictionary();
 
  207         string_code = *inputbuf++;
 
  209         for ( i=1 ; i<input_size ; i++ ) {
 
  210                 character = *inputbuf++;
 
  211                 index = find_child_node( string_code, character );
 
  212                 if ( dict[ index ].code_value != - 1 )
 
  213                         string_code = dict[ 
index ].code_value;
 
  215                         dict[ 
index ].code_value = next_code++;
 
  216                         dict[ 
index ].parent_code = string_code;
 
  217                         dict[ 
index ].character = (char) character;
 
  218                         output_bits( &output, (
unsigned long) string_code, current_code_bits );
 
  219                         string_code = character;
 
  220          if ( next_code > MAX_CODE ) {
 
  221                                 output_bits( &output, (
unsigned long) FLUSH_CODE, current_code_bits );
 
  222                                 InitializeDictionary();
 
  223                         } 
else if ( next_code > next_bump_code ) {
 
  224                 output_bits( &output, (
unsigned long) BUMP_CODE, current_code_bits );
 
  226                                 next_bump_code <<= 1;
 
  231         output_bits( &output, (
unsigned long) string_code, current_code_bits );
 
  232         output_bits( &output, (
unsigned long) END_OF_STREAM, current_code_bits);
 
  234         if ( output.mask != 0x80 )
 
  235         *output.data++ = (
ubyte)output.rack;
 
  237         return output.data-outputbuf;
 
  241 int lzw_expand( 
ubyte *outputbuf, 
ubyte *inputbuf ) 
 
  252         input.data = inputbuf;
 
  256                 InitializeDictionary();
 
  257                 old_code = (
uint) input_bits( &input, current_code_bits );
 
  258                 if ( old_code == END_OF_STREAM ) 
 
  260                 character = old_code;
 
  261                 outputbuf[counter++] = ( 
ubyte )old_code;
 
  263                         new_code = (
uint) input_bits( &input, current_code_bits );
 
  264                         if ( new_code == END_OF_STREAM ) 
 
  266                         if ( new_code == FLUSH_CODE )
 
  268                         if ( new_code == BUMP_CODE ) {
 
  272                         if ( new_code >= next_code ) {
 
  273                                 decode_stack[ 0 ] = (char) character;
 
  274                                 count = decode_string( 1, old_code );
 
  276                                 count = decode_string( 0, new_code );
 
  278                         character = decode_stack[ count - 1 ];
 
  280                                 outputbuf[counter++] = ( 
ubyte )decode_stack[ --count ];
 
  281                         dict[ next_code ].parent_code = old_code;
 
  282                         dict[ next_code ].character = (char) character;
 
  326         memcpy(&addr_tmp, addr, 
sizeof(
net_addr));
 
  420                 if((ignore != NULL) && (&
Net_players[i] == ignore)){
 
  508                 if((ignore != NULL) && (&
Net_players[i] == ignore)){
 
  558                                 if(
Net_players[idx].s_info.unreliable_buffer_size > 0){
 
  564                                 if(
Net_players[idx].s_info.reliable_buffer_size > 0){
 
  619         bool undeliverable = 
true;
 
  628         mode = (
ubyte)msg_mode; 
 
  686                                         undeliverable = 
false; 
 
  721         int color_index,player_index,to_player_index,should_display,server_msg; 
 
  753         player_index = color_index;
 
  756         if(player_index == -1){
 
  757                 nprintf((
"Network",
"Could not find player for processing game chat packet!\n"));
 
  769                         to_player_index = -1;
 
  773                 if(((to_player_index == -1) && (mode == 
MULTI_MSG_TARGET)) || (player_index == -1)){
 
  860         char msg_buffer[255];
 
  909         int team0_avail,team1_avail;
 
  910         char join_string[255];
 
  952                         host_restr_mode = -1;
 
  953                         memset(join_string,0,255);
 
  957                                 if(team0_avail && team1_avail){
 
  959                                         sprintf(join_string,
"Player %s has tried to join. Accept on team 1 or 2 ?",jr.
callsign);
 
  960                                 } 
else if(team0_avail && !team1_avail){
 
  962                                         sprintf(join_string,
"Player %s has tried to join team 0, accept y/n ? ?",jr.
callsign);
 
  963                                 } 
else if(!team0_avail && team1_avail){
 
  965                                         sprintf(join_string,
"Player %s has tried to join team 1, accept y/n ?",jr.
callsign);
 
  971                         Assert(host_restr_mode != -1);
 
 1065         int already_in_game = 0;
 
 1066         int offset, new_player_num,player_num,new_flags;
 
 1071         char new_player_pxo_squad[
LOGIN_LEN+1] = 
"";
 
 1072         char notify_string[256];
 
 1092         Assert(player_num != -1);
 
 1101         if ( !already_in_game ) {
 
 1116                 if(new_player_image[0] != 
'\0'){
 
 1139                 if(*
Net_players[new_player_num].m_player->callsign){
 
 1194 #define PLAYER_DATA_SLOP        100 
 1271         int offset, player_num, player_slot_num, new_flags;
 
 1286                 Assert(player_slot_num != -1);
 
 1455         char notify_string[256];
 
 1458         Assert(new_player_num >= 0);
 
 1476                 if(ingame_join_team != -1){
 
 1479                         val = (
ubyte)ingame_join_team;
 
 1496                 Assert(!(code & (ACCEPT_HOST | ACCEPT_OBSERVER | ACCEPT_INGAME)));
 
 1532         if(*
Net_players[new_player_num].m_player->callsign){
 
 1538         if (!(code & ACCEPT_OBSERVER)) {                
 
 1543         if(
Net_players[new_player_num].tracker_player_id >= 0){
 
 1570                 Select_default_ship = 0;
 
 1588                 Assert(!(code & (ACCEPT_HOST | ACCEPT_OBSERVER | ACCEPT_INGAME)));
 
 1627         if ( code & ACCEPT_INGAME ){
 
 1630         if ( code & ACCEPT_OBSERVER ){
 
 1633         if ( code & ACCEPT_HOST ){
 
 1636         if ( code & ACCEPT_CLIENT ){
 
 1689         val = (char)kicked_reason;
 
 1692         if (player_id < 0) {
 
 1705                 nprintf((
"Network",
"Sending a leave game packet to all players (server)\n"));
 
 1715                 if (target == NULL) {                   
 
 1743         if (player_num == -1) {
 
 1744                 nprintf((
"Network", 
"Received leave game packet for unknown player, ignoring\n"));
 
 1748                 nprintf((
"Network", 
"Received a leave game notice for %s\n", 
Net_players[player_num].m_player->callsign));
 
 1752         if (kicked_reason >= 0){
 
 1757                         switch(kicked_reason){
 
 1780                         memset(str, 0, 512);
 
 1822                         nprintf((
"Network", 
"Should reset!!\n"));
 
 1940         int modes_compatible = 1;
 
 1961                 modes_compatible = 0;
 
 1964                 modes_compatible = 0;
 
 2180                         packet_size += desc_len;
 
 2250         if(s_moveup != NULL){
 
 2253                         s_moveup = s_moveup->
next;                                      
 
 2403         while(stop != 0xff){
 
 2464 #define EXTRA_DEATH_VAPORIZED           (1<<0) 
 2465 #define EXTRA_DEATH_WASHED                      (1<<1) 
 2481         extra_death_info = 0; 
 
 2493         debris_signature = 0;
 
 2494         if ( pm && !vaporized ) {
 
 2504         if ( other_objp == NULL ) {
 
 2509                 nprintf((
"Network",
"Don't know other_obj for ship kill packet, sending NULL\n"));
 
 2516         sd = (
ubyte)self_destruct;
 
 2533                         temp = (char)
Net_players[pnum].m_player->killer_objtype;
 
 2537                         temp = (char)
Net_players[pnum].m_player->killer_species;
 
 2541                         temp2 = (short)
Net_players[pnum].m_player->killer_weapon_index;
 
 2560         ushort ship_sig, other_sig, debris_sig;
 
 2561         object *sobjp, *oobjp;
 
 2562         float percent_killed;   
 
 2563         ubyte was_player, extra_death_info, sd;
 
 2565         short killer_weapon_index = -1;
 
 2579         if ( was_player != 0 ) {
 
 2592         if ( sobjp == NULL ) {
 
 2593                 nprintf((
"Network", 
"Couldn't find net signature %d for kill packet\n", ship_sig));             
 
 2606         if (extra_death_info & EXTRA_DEATH_VAPORIZED) {
 
 2612         if ( was_player != 0 ) {
 
 2668         int offset, objnum, is_support;
 
 2684         if ( !is_support ) {
 
 2686                 if ( objp != NULL ) {
 
 2689                         nprintf((
"Network", 
"Ship with sig %d not found on ship arrival list -- not creating!!\n", signature));
 
 2739         int total_arrived_count, current_wave;
 
 2751         if ( (index < 0) || (index >= 
Num_wings) || (
Wings[index].num_waves == -1) ) {
 
 2752                 nprintf((
"Network", 
"Invalid index %d for wing create packet\n", index));
 
 2755         if ( (num_to_create <= 0) || (num_to_create > 
Wings[index].wave_count) ) {
 
 2756                 nprintf((
"Network", 
"Invalid number of ships to create (%d) for wing %s\n", num_to_create, 
Wings[index].
name));
 
 2804         if ( objp == NULL ) {
 
 2805                 nprintf((
"network", 
"Couldn't find object with net signature %d to depart\n", signature ));
 
 2816                                 nprintf((
"network", 
"Can not process ship depart packed. Object with net signature %d is not a ship!\n", signature ));  
 
 2861         if ( objp == NULL ) {
 
 2862                 nprintf((
"Network", 
"Could not find object with net signature %d for cargo revealed\n", signature ));
 
 2913         if ( objp == NULL ) {
 
 2914                 nprintf((
"Network", 
"Could not find object with net signature %d for cargo hidden\n", signature ));
 
 2933 #define SFPF_ALLOW_SWARM                (1<<7) 
 2934 #define SFPF_DUAL_FIRE                  (1<<6) 
 2935 #define SFPF_TARGET_LOCKED              (1<<5) 
 2953                 if ( num_fired == 0 ) {
 
 2970         sinfo = current_bank;
 
 2987         target_signature = 0;
 
 2995                         Assert( s_index < CHAR_MAX );                   
 
 2996                         t_subsys = (char)s_index;
 
 3016         if ( net_player_num < 0 ) {
 
 3024         if ( num_fired > 0 ) {
 
 3049         int offset, allow_swarm, target_objnum_save;
 
 3050         ushort net_signature, starting_sig, target_signature;
 
 3051         ubyte sinfo, current_bank;
 
 3052         object* 
objp, *target_objp;
 
 3063         if ( !from_player ) {
 
 3075                 if ( objp == NULL ) {
 
 3076                         nprintf((
"Network", 
"Could not find ship for fire secondary packet!"));
 
 3121         current_bank = (
ubyte)(sinfo & 0x3);
 
 3140         if ( target_objp != NULL ) {
 
 3143                 if ( (t_subsys != -1) && (target_objp->
type == 
OBJ_SHIP) ) {
 
 3148         if ( starting_sig != 0 ){
 
 3169         Assert ( cmeasure_count < UCHAR_MAX );
 
 3193         if ( objp == NULL ) {
 
 3194                 nprintf((
"network", 
"Could find object whose countermeasures are being launched!!!\n"));
 
 3205                 nprintf((
"network", 
"firing countermeasure from my ship\n"));
 
 3228         objp = &
Objects[weapon_objnum];
 
 3236         Assert( subsys_index < UCHAR_MAX );
 
 3237         cindex = (
ubyte)subsys_index;
 
 3266         int offset, weapon_objnum, wid = -1;
 
 3267         ushort pnet_signature, wnet_signature;
 
 3276         short pitch, heading;   
 
 3295         if ( objp == NULL ) {
 
 3296                 nprintf((
"network", 
"could find parent object with net signature %d for turret firing\n", pnet_signature));
 
 3333         if(wnet_signature != 0){                
 
 3339         if (weapon_objnum != -1) {
 
 3361         sindex = entry->
index;
 
 3406         Assert ( (priority >= 0) && (priority < UCHAR_MAX) );
 
 3407         Assert ( (timing >= 0) && (timing < UCHAR_MAX) );       
 
 3409         up = (
ubyte) priority;
 
 3410         us = (
ubyte) source;
 
 3411         utime = (
ubyte)timing;
 
 3423         if (multi_target == -1){                
 
 3433         int offset, 
id, builtin_type, delay;
 
 3436         int multi_team_filter;
 
 3454                 mprintf((
"Builtin message of type %d filtered out in process_mission_message_packet()\n", 
id));
 
 3529         unsigned char data[8];
 
 3540    unsigned char data[8];
 
 3563 #define MAX_MISSION_ITEMS_BYTES (MAX_PACKET_SIZE - (sizeof(multi_create_info) + 1) ) 
 3566 #define MISSION_LIST_ITEMS                      1 
 3567 #define CAMPAIGN_LIST_ITEMS             2 
 3644         if(player_num == -1){
 
 3645                 nprintf((
"Network",
"Could not find player to send mission list items to!\n"));
 
 3719         val = (
ubyte) pause;
 
 3744         if(player_index == -1){
 
 3814                 nprintf((
"Network",
"Mission file rejected by server, aborting...\n"));
 
 3845         ml_string(
"Receiving force end mission packet");
 
 3906                 Assert(player_num != -1);
 
 3999         if((obs_num < 0) || (
Net_players[obs_num].m_player->objnum < 0)){
 
 4004         if(target_sig == 0){
 
 4049         int player_num,ship_class,ship_index;
 
 4068                         nprintf((
"Network",
"Error looking up player for object/slot assignment!!\n"));
 
 4075                                         Error(
LOCATION, 
"Could not retrieve net object for signature %d!\n", net_sig);
 
 4106         utmp = (
ubyte)(what);
 
 4108         utmp = (
ubyte)(new_bank);
 
 4110         utmp = (
ubyte)(link_status);
 
 4121         ubyte what, new_bank, link_status;
 
 4133         if ( objp == NULL ) {
 
 4134                 nprintf((
"network", 
"Unable to locate ship with signature %d for weapon state change\n", signature));
 
 4179 #define SHIP_STATUS_REPEAT 2 
 4209         int player_num,unique_id;
 
 4282         target_signature = 0;
 
 4294                 Assert( s_index < CHAR_MAX );                   
 
 4295                 t_subsys = (char)s_index;
 
 4309         int offset, player_num, command, index = 0, tobjnum_save;       
 
 4311         char t_subsys, 
type;
 
 4312         object *
objp, *target_objp;
 
 4335         if(player_num == -1){
 
 4336                 nprintf((
"Network",
"Received player order packet from unknown player\n"));              
 
 4342                 nprintf((
"Network", 
"not doing player order because object requestting is not a ship\n"));
 
 4359                 nprintf((
"Network",
"Received player order packet from player not allowed to give orders!!\n"));
 
 4377         if ( target_objp == NULL ) {
 
 4381         targeted_subsys = NULL;
 
 4382         if ( t_subsys != -1 ) {
 
 4383                 Assert( target_objp != NULL );
 
 4392         if ( target_objp ) {
 
 4487         vec3d tmp, local_hitpos;
 
 4490         Assert ( index < UCHAR_MAX );
 
 4491         uindex = (
ubyte)(index);
 
 4512         vec3d local_hit_pos, world_hit_pos;
 
 4522         if ( objp != NULL ) {
 
 4537                 if (subsysp == NULL) {
 
 4538                         nprintf((
"Network", 
"Could not find subsys %d for ship %s to process as being destroyed\n", (
int)uindex, shipp->
ship_name ));
 
 4562         Assert ( index < UCHAR_MAX );
 
 4563         uindex = (
ubyte)(index);
 
 4597         if ( objp == NULL ) {
 
 4598                 nprintf((
"Network", 
"Could not find object with net signature %d for cargo revealed\n", signature ));
 
 4611         if (subsysp == NULL) {
 
 4631         Assert ( index < UCHAR_MAX );
 
 4632         uindex = (
ubyte)(index);
 
 4666         if ( objp == NULL ) {
 
 4667                 nprintf((
"Network", 
"Could not find object with net signature %d for cargo hidden\n", signature ));
 
 4680         if (subsysp == NULL) {
 
 4723                 nprintf((
"Network",
"Loading mission..."));
 
 4743                 nprintf((
"Network",
"Finished loading mission\n"));              
 
 4820         ml_string(
NOX(
"Client received mission start from server - entering mission"));
 
 4827         "REPAIR_INFO_BEGIN",
 
 4829         "REPAIR_INFO_UPDATE",
 
 4830         "REPAIR_INFO_QUEUE",
 
 4831         "REPAIR_INFO_ABORT",
 
 4832         "REPAIR_INFO_BROKEN",
 
 4833         "REPAIR_INFO_WARP_ADD",
 
 4834         "REPAIR_INFO_WARP_REMOVE",
 
 4835         "REPAIR_INFO_ONWAY",
 
 4836         "REPAIR_INFO_KILLED",
 
 4837         "REPAIR_INFO_COMPLETE",
 
 4848         ushort repaired_signature, repair_signature;
 
 4857         repair_signature = 0;
 
 4876         ushort repaired_signature, repair_signature;
 
 4877         object *repaired_objp, *repair_objp;
 
 4888         nprintf((
"Network", 
"Repair: %s received (%s/%s)\n", repair_text[code], (repaired_objp==NULL)?
"<None>":
Ships[repaired_objp->
instance].
ship_name, (repair_objp==NULL)?
"<None>":Ships[repair_objp->
instance].ship_name));
 
 4894         if ( repaired_objp == NULL ) {
 
 4950         ubyte docker_index, dockee_index;
 
 4966                 Assert (other_objp != NULL); 
 
 4967                 if (other_objp == NULL) {
 
 4973                 Assert (other_objp == NULL); 
 
 4987                 Assert( other_objp != NULL );
 
 5001                 Assert( other_objp != NULL );
 
 5024                 if ( shipnum != -1 ) {
 
 5025                         Assert( Ships[shipnum].objnum != -1 );
 
 5028                         other_signature = 0;
 
 5059         ushort net_signature, other_net_signature;
 
 5060         object *
objp, *other_objp;
 
 5064         ubyte docker_index = 0, dockee_index = 0;
 
 5070                 nprintf((
"Network", 
"Couldn't find object for ai update\n"));
 
 5079                         nprintf((
"Network", 
"Couldn't find other object for ai update on dock\n"));
 
 5147                 nprintf((
"Network", 
"Invalid code for ai update: %d\n", code));
 
 5173                         is_campaign = (
ubyte)start_campaign;
 
 5197         ubyte campaign_flag;
 
 5257         val = (
ubyte)accept;
 
 5279                 nprintf((
"Network",
"Standalone received store stats packet - rebroadcasting..\n"));                             
 
 5321         object bogus_object;
 
 5331                 objp = &bogus_object;
 
 5344                 if(objp != &bogus_object){
 
 5351                 if(objp != &bogus_object)
 
 5392         int from_slot,from_index;
 
 5393         int to_slot,to_index;
 
 5395         int wl_ship_slot,ship_class;
 
 5413         Assert(player_num != -1);       
 
 5414         if(player_num == -1){
 
 5426                         wl_drop(from_slot,from_index,to_slot,to_index,wl_ship_slot,player_num);
 
 5429                         multi_ts_drop(from_slot,from_index,to_slot,to_index,ship_class,player_num);                     
 
 5447         team = (
ubyte)team_num;
 
 5454         memcpy(data + packet_size,wss_data,size);
 
 5455         packet_size += 
size;
 
 5487                 Assert(player_index != -1);             
 
 5488                 if(player_index < 0){
 
 5524         ubyte plinked, sdual;
 
 5540         ubyte plinked, sdual;
 
 5553                 nprintf((
"Network",
"Received firing info packet from unknown player, ignoring\n"));
 
 5590         int offset, goal_num, new_status, valid;
 
 5599         if ( new_status != -1 ){
 
 5653         while(stop != 0xff){
 
 5659                 if(player_num == -1){
 
 5754                 popup(
PF_USE_AFFIRMATIVE_ICON,1,
POPUP_OK,
XSTR(
"You cannot join this game because you are running an older version of FreeSpace than the server.  Exit FreeSpace, and choose the 'Update FreeSpace' button in the FreeSpace launcher to download the latest version of FreeSpace.",734));
 
 5778         int idx, player_index;
 
 5786         val = (
ubyte)std_request;
 
 5822         val = (
ubyte)ship_count;
 
 5857                         if(player_index == -1){
 
 5973         ushort net_sig, ship_ets, sval;
 
 6016                         Multi_ts_num_deleted--;
 
 6017                         nprintf((
"Network",
"Couldn't find object by net signature for ship delete in post sync data packet\n"));
 
 6026         for(idx=0; idx<ship_count; idx++){      
 
 6036                 Assertion(objp != NULL, 
"idx: %d, ship_count: %d, sinfo_index: %u, ts_index: %u, net_sig: %u",
 
 6037                         idx, ship_count, sinfo_index, ts_index, net_sig);
 
 6038                 Assertion(objp->
type == 
OBJ_SHIP, 
"type: %d, idx: %d, ship_count: %d, sinfo_index: %u, ts_index: %u, net_sig: %u",
 
 6039                         objp->
type, idx, ship_count, sinfo_index, ts_index, net_sig);
 
 6049         for(idx=0; idx<ship_count; idx++){      
 
 6165         val = (
ubyte)std_request;
 
 6169         val = (
ubyte)team_num;
 
 6297 #define OBJ_VISIBILITY_DOT                                      0.6f     
 6308         Assert( tri_num < UCHAR_MAX );
 
 6309         utri_num = (
ubyte)tri_num;
 
 6380                 Assert( utri_num < shieldp->ntris );
 
 6381                 stri = shieldp->
tris[utri_num];
 
 6383                 for ( i = 0; i < 3; i++ ) {
 
 6410         val = (
ubyte)stats_code;
 
 6537         ushort u_tmp, num_medals;
 
 6545         if (player_num == -1) {
 
 6546                 nprintf((
"Network", 
"Couldn't find player for stats update!\n"));
 
 6547                 ml_string(
"Couldn't find player for stats update!\n");
 
 6584                 for (idx=0; (idx < 
Num_medals) && (idx < num_medals); idx++) {
 
 6627                 ml_string(
"Received STATS_MISSION_KILLS\n");
 
 6635                 ml_string(
"Received STATS_DOGFIGHT_KILLS\n");
 
 6636                 if(player_num >= 0){
 
 6642                         if(player_num >= 0){                            
 
 6667         ubyte packet_type, atype;
 
 6671         if (relvec != NULL )
 
 6677         Assert( asteroid_type < UCHAR_MAX );
 
 6678         atype = (
ubyte)asteroid_type;
 
 6713         if ( hitpos != NULL )
 
 6722         if(other_objp == NULL){
 
 6723                 ushort invalid_sig = 0xffff;
 
 6743         switch( packet_type ) {
 
 6746                 ushort psignature, signature;
 
 6749                 object *parent_objp;
 
 6759                 if ( parent_objp ) {
 
 6762                         nprintf((
"Network", 
"Couldn't create asteroid because parent wasn't found!!!\n"));
 
 6780                         nprintf((
"Network", 
"Couldn't throw asteroid because couldn't find it\n"));
 
 6790                 ushort signature, osignature;
 
 6791                 object *
objp, *other_objp;
 
 6801                 if(osignature == 0xffff){
 
 6807                         nprintf((
"Network", 
"Cannot hit asteroid because signature isn't found\n"));
 
 6885                         HUD_printf(
XSTR(
"Player %s has tried to join - allow (y/n) ?",736),callsign);
 
 6918         code = (char)notify_code;
 
 6920         code = (char)err_code;
 
 6930         char notify_code,error_code;
 
 6949                 nprintf((
"Network", 
"Coulnd't find player for countermeasure success packet\n"));
 
 6972 #define UPDATE_IS_PAUSED                (1<<0) 
 6973 #define UPDATE_HULL_INFO                (1<<1) 
 7004                 ubyte percent, ns, threats, n_quadrants;
 
 7029                 for (i = 0; i < n_quadrants; i++ ) {
 
 7077         int is_paused, have_hull_info;
 
 7080         float weapon_energy;
 
 7093                 if(player_index != -1){
 
 7101         if ( have_hull_info ) {
 
 7117                 shield_percent.resize(n_quadrants);
 
 7118                 for (i = 0; i < n_quadrants; i++ ){
 
 7120                         shield_percent[
i] = ub_tmp;
 
 7125                 for ( i = 0; i < n_subsystems; i++ ){
 
 7127                         subsystem_percent[
i] = ub_tmp;
 
 7137                 for(i=0; i<ammo_count; i++){
 
 7152                         for ( i = 0; i < n_quadrants; i++ ) {
 
 7153                                 if (i < objp->n_quadrants) {
 
 7167                                         fl_val = subsystem_percent[n_subsystems] * subsysp->
max_hits / 100.0f;
 
 7182                         for(i=0; i<ammo_count; i++){
 
 7272                 count = stage_count[
i];
 
 7274                 for ( j = 0; j < 
count; j++ ) {
 
 7275                         i_tmp = stages[
i][j];
 
 7296                 stages[
i] = active_stages[
i];
 
 7297                 for ( j = 0; j < 
count; j++ ) {
 
 7299                         active_stages[
i][j] = i_tmp;
 
 7317         object *homing_object;
 
 7332         homing_signature = 0;
 
 7342                         Assert( s_index < CHAR_MAX );                   
 
 7343                         t_subsys = (char)s_index;
 
 7360         ushort weapon_signature, homing_signature;
 
 7362         object *homing_object, *weapon_objp;
 
 7375         if ( weapon_objp == NULL ) {
 
 7376                 nprintf((
"Network", 
"Couldn't find weapon object for homing update -- skipping update\n"));
 
 7384         if ( homing_object == NULL ) {
 
 7385                 nprintf((
"Network", 
"Couldn't find homing object for homing update\n"));
 
 7395                         nprintf((
"Network", 
"Homing object is invalid for homing update\n"));
 
 7404         if ( h_subsys != -1 ) {
 
 7433         float intensity, time;
 
 7550         int observer_team, observed_team, alternate_iff_color;  
 
 7598         char subsys_buf[255];
 
 7642         if(banks_fired <= 0){
 
 7702         if ( objp == NULL ) {
 
 7703                 nprintf((
"Network", 
"Could not find ship for fire primary packet NEW!"));
 
 7772         Assert ( cmeasure_count < UCHAR_MAX );
 
 7777         nprintf((
"Network",
"Sending NEW countermeasure packet!\n"));
 
 7810         if ( objp == NULL ) {
 
 7811                 nprintf((
"network", 
"Could find object whose countermeasures are being launched!!!\n"));
 
 7830                 nprintf((
"network", 
"firing countermeasure from my ship\n"));
 
 7850         Assert(
override != NULL);
 
 7851         if((shooter == NULL) || (turret == NULL) || (
override == NULL)){
 
 7857                 if (target == NULL) {
 
 7864         u_beam_info = (
short)beam_info_index;
 
 7866         if (bfi_flags & BFIF_IS_FIGHTER_BEAM) {
 
 7867                 Assert( (bank_point >= 0) && (bank_point < UCHAR_MAX) );
 
 7868                 subsys_index = (char)bank_point;
 
 7873         Assert(subsys_index >= 0);
 
 7874         if (subsys_index < 0) {
 
 7890         for (
int i = 0; i < b_info.
shot_count; i++) {
 
 7911         ushort shooter_sig, target_sig;
 
 7961                 nprintf((
"Network", 
"Couldn't get shooter info for BEAM weapon!\n"));
 
 7978                 nprintf((
"Network", 
"Couldn't get target info for BEAM weapon!\n"));
 
 7986                 int bank = (
ubyte)subsys_index % 10;
 
 7987                 int point = (
ubyte)subsys_index / 10;
 
 8007                 fire_info.
bank = bank;
 
 8011                 if (fire_info.
turret == NULL) {
 
 8012                         nprintf((
"Network", 
"Couldn't get turret for BEAM weapon!\n"));
 
 8092         else if((store_flags & MEF_DIRECTIVE_SPECIAL) && !(
Mission_events[u_event].flags & MEF_DIRECTIVE_SPECIAL)){
 
 8125         int ship_index, bank_type, bank_number, ammo_left, rearm_limit, new_weapon_index;
 
 8143                 if (new_weapon_index < 0)
 
 8150                         shipp = &
Ships[ship_index];
 
 8156         else if (bank_type == 1)
 
 8159                 if (new_weapon_index < 0)
 
 8166                         shipp = &
Ships[ship_index];
 
 8173                 nprintf((
"network", 
"weapon_or_ammo_changed_packet recived for tertiary or other unsupported type\n"));
 
 8256         object *
objp = NULL;
 
 8285         objp = &
Objects[weapon_objnum];
 
 8289         Assert( subsys_index < UCHAR_MAX );
 
 8290         cindex = (
ubyte)subsys_index;
 
 8315         int offset, weapon_objnum, wid = -1;
 
 8324         short pitch, heading;
 
 8339         if ( objp == NULL ) {
 
 8340                 nprintf((
"network", 
"could find parent object with net signature %d for flak firing\n", pnet_signature));
 
 8379         if (weapon_objnum != -1) {
 
 8393 #define ADD_NORM_VEC(d) do { Assert((packet_size + 3) < MAX_PACKET_SIZE); char vnorm[3] = { (char)(d.x * 127.0f), (char)(d.y * 127.0f), (char)(d.z * 127.0f) }; memcpy(data + packet_size, vnorm, 3); packet_size += 3; } while(0); 
 8394 #define GET_NORM_VEC(d) do { char vnorm[3]; memcpy(vnorm, data+offset, 3); d.x = (float)vnorm[0] / 127.0f; d.y = (float)vnorm[1] / 127.0f; d.z = (float)vnorm[2] / 127.0f; } while(0); 
 8415         windex = (short)weapon_info_index;
 
 8417         udamage = (
ushort)damage;
 
 8435         vec3d local_hit_pos;
 
 8482         val = (char)bolt_type_internal;
 
 8494         char bolt_type_internal;
 
 8505         if(bolt_type_internal < 0){
 
 8510         nebl_bolt(bolt_type_internal, &start, &strike);
 
 8583         int idx, found_player, captain_change;
 
 8710         if (num_ubytes < 9) {
 
 8711                 Warning(
LOCATION, 
"Invalid call to send_sexp_packet. Not enough data included!"); 
 
 8717         val = (
ushort)num_ubytes;
 
 8720         for (i =0; i < num_ubytes; i++) {
 
 8740         for (i=0; i < num_ubytes; i++) {
 
void asteroid_sub_create(object *parent_objp, int asteroid_type, vec3d *relvec)
 
#define NETINFO_FLAG_WARPING_OUT
 
void ship_wing_cleanup(int shipnum, wing *wingp)
 
void send_change_ai_class_packet(ushort net_signature, char *subsystem, int new_ai_class)
 
void send_variable_update_packet(int variable_index, char *value)
 
void message_queue_message(int message_num, int priority, int timing, char *who_from, int source, int group, int delay, int builtin_type)
 
char * Cmdline_connect_addr
 
void send_shield_explosion_packet(int objnum, int tri_num, vec3d hit_pos)
 
#define REARM_REPAIR_ME_ITEM
 
#define SQUAD_MSG_REINFORCEMENT
 
void send_turret_fired_packet(int ship_objnum, int subsys_index, int weapon_objnum)
 
int timestamp(int delta_ms)
 
#define NETINFO_FLAG_ACCEPT_INGAME
 
#define MULTIPLAYER_CLIENT
 
#define SUBSYSTEM_DESTROYED
 
#define MY_NET_PLAYER_NUM
 
#define NETGAME_STATE_DEBRIEF
 
void obj_set_flags(object *obj, uint new_flags)
 
float get_max_shield_quad(object *objp)
 
model_subsystem * system_info
 
void send_beam_fired_packet(object *shooter, ship_subsys *turret, object *target, int beam_info_index, beam_info *override, int bfi_flags, int bank_point)
 
#define NETPLAYER_STATE_HOST_SETUP
 
weapon Weapons[MAX_WEAPONS]
 
int primary_bank_weapons[MAX_SHIP_PRIMARY_BANKS]
 
#define NETPLAYER_STATE_IN_MISSION
 
void hud_gauge_popup_start(int gauge_index, int time)
Start a gauge to pop-up. 
 
#define SUBSYS_CARGO_HIDDEN
 
void process_ship_create_packet(ubyte *data, header *hinfo)
 
void ai_mission_goal_complete(ai_info *aip)
 
#define MULTI_END_NOTIFY_KICKED_INGAME_ENDED
 
void multi_debrief_stats_accept()
 
void send_server_query(net_addr *addr)
 
int multi_msg_matches_expr(net_player *np, const char *expr)
 
void sexp_packet_received(ubyte *received_packet, int num_ubytes)
 
void process_ai_info_update_packet(ubyte *data, header *hinfo)
 
float vm_vec_mag_quick(const vec3d *v)
 
int kills[MAX_SHIP_CLASSES]
 
void player_set_squad_bitmap(player *p, char *fname, bool ismulti)
 
void mission_parse_support_arrived(int objnum)
 
char name[MAX_GAMENAME_LEN+1]
 
void process_ship_kill_packet(ubyte *data, header *hinfo)
 
void send_sw_query_packet(ubyte code, char *txt)
 
#define SHIP_STATUS_CHANGE
 
int multi_pack_unpack_orient(int write, ubyte *data, matrix *orient)
 
#define NETGAME_STATE_PAUSED
 
#define MULTI_MSG_FRIENDLY
 
void add_join_request(ubyte *data, int *size, join_request *jr)
 
void process_ping_packet(ubyte *data, header *hinfo)
 
char Game_current_mission_filename[MAX_FILENAME_LEN]
 
void send_store_stats_packet(int accept)
 
polymodel * model_get(int model_num)
 
weapon_info Weapon_info[MAX_WEAPON_TYPES]
 
#define JOIN_DENY_JR_NOOBS
 
void send_reinforcement_avail(int rnum)
 
#define PLAYER_ORDER_PACKET
 
SCP_vector< game_snd > Snds
 
void send_NEW_countermeasure_fired_packet(object *objp, int cmeasure_count, int rand_val)
 
#define NETPLAYER_STATE_MISSION_LOADED
 
#define AG_FLAG_IN_MISSION
 
void process_change_iff_color_packet(ubyte *data, header *hinfo)
 
submodel_instance_info submodel_info_1
 
void send_self_destruct_packet()
 
void multi_ingame_observer_finish()
 
void send_ship_create_packet(object *objp, int is_support)
 
GLsizei const GLfloat * value
 
#define PACKET_SET_SIZE()
 
void multi_ts_create_wings()
 
void process_observer_update_packet(ubyte *data, header *hinfo)
 
ushort multi_get_next_network_signature(int what_kind)
 
int multi_eval_join_request(join_request *jr, net_addr *addr)
 
int weapon_create(vec3d *pos, matrix *orient, int weapon_type, int parent_obj, int group_id=-1, int is_locked=0, int is_spawned=0, float fof_cooldown=0.0f, ship_subsys *src_turret=NULL)
 
#define JOIN_DENY_JR_TRACKER_INVAL
 
void multi_untag_player_ships()
 
#define NETPLAYER_STATE_MISSION_LOADING
 
#define EXTRA_DEATH_VAPORIZED
 
void obj_reset_all_collisions()
 
int Multi_restr_query_timestamp
 
ship_subsys fighter_beam_turret_data
 
#define MULTI_PRIMARY_CHANGED
 
void hud_squadmsg_call_reinforcement(int reinforcement_num, int player_num)
 
#define SQUADMSG_HISTORY_ADD_ENTRY
 
#define NETGAME_STATE_BRIEFING
 
void ship_hit_pain(float damage, int quadrant)
 
void multi_options_update_local()
 
int ship_iff_color[MAX_IFFS][MAX_IFFS]
 
void send_netplayer_update_packet(net_player *pl)
 
void psnet_mark_received(PSNET_SOCKET_RELIABLE socket)
 
void ship_add_exited_ship(ship *sp, int reason)
 
void process_game_chat_packet(ubyte *data, header *hinfo)
 
#define MULTI_STANDALONE(np)
 
#define MULTI_SYNC_PRE_BRIEFING
 
int next_secondary_fire_stamp[MAX_SHIP_SECONDARY_BANKS]
 
int gameseq_get_state(void)
 
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
void multi_io_send(net_player *pl, ubyte *data, int len)
 
#define NETPLAYER_STATE_SLOT_ACK
 
void add_net_addr(ubyte *data, int *size, net_addr *addr)
 
int multi_obs_create_player(int player_num, char *name, net_addr *addr, player *pl)
 
int detail[MAX_MODEL_DETAIL_LEVELS]
 
void send_secondary_fired_packet(ship *shipp, ushort starting_sig, int starting_count, int num_fired, int allow_swarm)
 
void process_countdown_packet(ubyte *data, header *hinfo)
 
submodel_instance_info submodel_info_2
 
void process_variable_update_packet(ubyte *data, header *hinfo)
 
void process_homing_weapon_info(ubyte *data, header *hinfo)
 
#define NETINFO_FLAG_OBSERVER
 
int hud_squadmsg_send_wing_command(int wingnum, int command, int send_message, int update_history, int player_num)
 
void multi_io_send_to_all_reliable(ubyte *data, int length, net_player *ignore)
 
int ship_fire_primary(object *obj, int stream_weapons, int force)
 
void process_turret_fired_packet(ubyte *data, header *hinfo)
 
int weapon_recharge_index
 
void process_force_end_mission_packet(ubyte *data, header *hinfo)
 
void process_mission_request_packet(ubyte *data, header *hinfo)
 
void server_verify_filesig(short player_id, ushort sum_sig, int length_sig)
 
unsigned int mp_shots_fired
 
void process_repair_info_packet(ubyte *data, header *hinfo)
 
void send_cargo_hidden_packet(ship *shipp)
 
void process_flak_fired_packet(ubyte *data, header *hinfo)
 
void process_subsystem_cargo_hidden_packet(ubyte *data, header *hinfo)
 
void process_mission_message_packet(ubyte *data, header *hinfo)
 
void send_subsystem_cargo_revealed_packet(ship *shipp, int index)
 
unsigned int mp_bonehead_hits
 
struct vec3d::@225::@227 xyz
 
#define KICK_REASON_BAD_XFER
 
void multi_io_send_reliable(net_player *pl, ubyte *data, int len)
 
ship_subsys * target_subsys
 
int message_filter_multi(int id)
 
#define NETPLAYER_IS_OBSERVER(player)
 
void process_debris_update_packet(ubyte *data, header *hinfo)
 
int find_player_id(short player_id)
 
void mission_goal_validation_change(int goal_num, int valid)
 
#define NETPLAYER_STATE_JOINING
 
void ml_string(const char *string, int add_time)
 
#define MULTI_END_NOTIFY_EARLY_END
 
#define PLAYER_FLAGS_HAS_PLAYED_PXO
 
void send_asteroid_throw(object *objp)
 
int psnet_rel_send(PSNET_SOCKET_RELIABLE socketid, ubyte *data, int length, int np_index)
 
void ship_do_cargo_revealed(ship *shipp, int from_network)
 
void send_file_sig_request(char *file_name)
 
void send_ship_kill_packet(object *objp, object *other_objp, float percent_killed, int self_destruct)
 
#define SEF_PLAYER_DELETED
 
void send_NEW_primary_fired_packet(ship *shipp, int banks_fired)
 
ai_info Ai_info[MAX_AI_INFO]
 
vec3d * vm_vec_rotate(vec3d *dest, const vec3d *src, const matrix *m)
 
void process_countermeasure_success_packet(ubyte *data, header *hinfo)
 
#define Assertion(expr, msg,...)                                                                        
 
#define CAMPAIGN_LIST_ITEMS
 
int dock_find_dockpoint_used_by_object(object *objp, object *other_objp)
 
void process_wing_create_packet(ubyte *data, header *hinfo)
 
#define END_OF_LIST(head)
 
void process_host_captain_change_packet(ubyte *data, header *hinfo)
 
void send_game_active_packet(net_addr *addr)
 
char mission_name[NAME_LENGTH+1]
 
#define MEF_DIRECTIVE_SPECIAL
 
#define NETPLAYER_STATE_JOINED
 
int restore_wss_data(ubyte *block)
 
ship_subsys * targeted_subsys
 
#define NETGAME_STATE_STD_HOST_SETUP
 
void mission_log_add_entry_multi(int type, char *pname, char *sname, int index, fix timestamp, int flags)
 
unsigned int ms_bonehead_hits
 
net_player * Multi_pause_pauser
 
sexp_variable Sexp_variables[MAX_SEXP_VARIABLES]
 
float shot_aim[MAX_BEAM_SHOTS]
 
void send_join_packet(net_addr *addr, join_request *jr)
 
#define MULTI_JOIN_RESTR_MODE_2
 
ship_subsys * homing_subsys
 
#define NETPLAYER_STATE_SETTINGS_ACK
 
void ship_do_cap_subsys_cargo_revealed(ship *shipp, ship_subsys *subsys, int from_network)
 
void send_netgame_update_packet(net_player *pl)
 
void process_sexp_packet(ubyte *data, header *hinfo)
 
int ship_fire_secondary(object *obj, int allow_swarm)
 
#define MISSION_LIST_ITEMS
 
void send_repair_info_packet(object *repaired_objp, object *repair_objp, int code)
 
unsigned int s_shots_fired
 
log_entry log_entries[MAX_LOG_ENTRIES]
 
int current_secondary_bank
 
void send_hud_msg_to_all(char *msg)
 
void multi_handle_sudden_mission_end()
 
void process_store_stats_packet(ubyte *data, header *hinfo)
 
void HUD_sourced_printf(int source, const char *format,...)
 
void multi_io_send_to_all(ubyte *data, int length, net_player *ignore)
 
void send_mission_message_packet(int id, char *who_from, int priority, int timing, int source, int builtin_type, int multi_target, int multi_team_filter, int delay)
 
void multi_team_host_lock_all()
 
void process_NEW_primary_fired_packet(ubyte *data, header *hinfo)
 
void multi_debrief_stats_toss()
 
ship_subsys_info subsys_info[SUBSYSTEM_MAX]
 
void ship_apply_whack(vec3d *force, vec3d *hit_pos, object *objp)
 
void process_debrief_info(ubyte *data, header *hinfo)
 
multi_local_options player_options
 
vec3d turret_firing_point[MAX_TFP]
 
void ship_get_global_turret_info(object *objp, model_subsystem *tp, vec3d *gpos, vec3d *gvec)
 
void multi_create_handle_join(net_player *pl)
 
void nebl_bolt(size_t type, vec3d *start, vec3d *strike)
 
unsigned int mp_shots_hit
 
int psnet_same(net_addr *a1, net_addr *a2)
 
#define SECONDARY_FIRED_PLR
 
#define MULTI_JOIN_RESTR_MODE_4
 
#define MULTI_JOIN_RESTR_MODE_1
 
void process_new_player_packet(ubyte *data, header *hinfo)
 
void std_update_player_ping(net_player *p)
 
void send_host_restr_packet(char *callsign, int code, int mode)
 
void send_cargo_revealed_packet(ship *shipp)
 
void multi_handle_end_mission_request()
 
void ai_do_objects_docked_stuff(object *docker, int docker_point, object *dockee, int dockee_point, bool update_clients=true)
 
int wep_count[MAX_SHIP_WEAPONS]
 
void ship_actually_depart(int shipnum, int method)
 
void debris_hit(object *debris_obj, object *other_obj, vec3d *hitpos, float damage)
 
void multi_ping_reset(ping_struct *ps)
 
void process_netgame_update_packet(ubyte *data, header *hinfo)
 
#define MULTI_END_ERROR_HOST_LEFT
 
reinforcements Reinforcements[MAX_REINFORCEMENTS]
 
#define MISSION_GOAL_INFO
 
#define AI_ACTIVE_GOAL_DYNAMIC
 
void send_emp_effect(ushort net_sig, float intensity, float time)
 
void process_host_restr_packet(ubyte *data, header *hinfo)
 
int multi_endgame_ending()
 
void send_ping(net_addr *addr)
 
void process_NEW_countermeasure_fired_packet(ubyte *data, header *hinfo)
 
player Players[MAX_PLAYERS]
 
void std_connect_set_host_connect_status()
 
int mission_remove_scheduled_repair(object *objp)
 
void process_shield_explosion_packet(ubyte *data, header *hinfo)
 
void send_netplayer_load_packet(net_player *pl)
 
unsigned int ms_shots_fired
 
void send_event_update_packet(int event)
 
void process_beam_fired_packet(ubyte *data, header *hinfo)
 
void process_secondary_fired_packet(ubyte *data, header *hinfo, int from_player)
process a packet indicating a secondary weapon was fired 
 
void send_mission_goal_info_packet(int goal_num, int new_status, int valid)
 
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
 
#define MAX_SHIP_SECONDARY_BANKS
 
unsigned int missions_flown
 
void send_ai_info_update_packet(object *objp, char what, object *other_objp)
 
void process_pong_packet(ubyte *data, header *hinfo)
 
void process_game_active_packet(ubyte *data, header *hinfo)
 
void multi_display_chat_msg(const char *msg, int player_index, int add_id)
 
#define JOIN_DENY_JR_INGAME_JOIN
 
void send_bytes_recvd_packet(net_player *pl)
 
matrix * vm_vector_2_matrix(matrix *m, const vec3d *fvec, const vec3d *uvec, const vec3d *rvec)
 
void process_hud_message(ubyte *data, header *hinfo)
 
void send_asteroid_hit(object *objp, object *other_objp, vec3d *hitpos, float damage)
 
p_object * mission_parse_get_arrival_ship(const char *name)
Returns the parse object on the ship arrival list associated with the given name. ...
 
void vm_vec_add2(vec3d *dest, const vec3d *src)
 
int m_okKills[MAX_SHIP_CLASSES]
 
GLenum GLenum GLenum input
 
void flak_muzzle_flash(vec3d *pos, vec3d *dir, physics_info *pip, int turret_weapon_class)
 
ship_subsys * ship_get_indexed_subsys(ship *sp, int index, vec3d *attacker_pos)
 
void mission_parse_fixup_players()
 
void multi_join_reset_join_stamp()
 
void mission_goal_status_change(int goal_num, int new_status)
 
struct matrix::@228::@230 vec
 
#define NETINFO_FLAG_AM_MASTER
 
ubyte reliable_buffer[MAX_PACKET_SIZE]
 
void send_debrief_event()
 
#define HUD_SOURCE_COMPUTER
 
void ml_printf(const char *format,...)
 
float ship_max_hull_strength
 
#define MISSION_SYNC_DATA
 
void vm_vec_scale(vec3d *dest, float s)
 
void process_lightning_packet(ubyte *data, header *hinfo)
 
#define JOIN_DENY_JR_FULL
 
void process_netplayer_load_packet(ubyte *data, header *hinfo)
 
void process_event_update_packet(ubyte *data, header *hinfo)
 
#define MULTI_FS_SERVER_COMPATIBLE_VERSION
 
#define MAX_SHIPS_PER_PACKET
 
void send_client_update_packet(net_player *pl)
 
PSNET_SOCKET_RELIABLE reliable_socket
 
void process_reinforcement_avail(ubyte *data, header *hinfo)
 
#define NETINFO_FLAG_HAS_CD
 
char name[MAX_GAMENAME_LEN+1]
 
void multi_flush_multidata_cache()
 
void send_game_chat_packet(net_player *from, const char *msg, int msg_mode, net_player *to, const char *expr, int server_msg)
 
void send_countdown_packet(int time)
 
#define SHIP_DEPARTED_BAY
 
unsigned int p_shots_fired
 
int unreliable_buffer_size
 
void emp_start_local(float intensity, float time)
 
float get_hull_pct(object *objp)
 
void multi_flush_mission_stuff()
 
#define WSS_WEAPON_SELECT
 
#define DEFAULT_GAME_PORT
 
#define STORE_MISSION_STATS
 
int ship_get_index_from_subsys(ship_subsys *ssp, int objnum, int error_bypass)
 
#define HOMING_WEAPON_UPDATE
 
#define NUM_BUTTON_FIELDS
 
ai_goal goals[MAX_AI_GOALS]
 
#define ACCEPT_PLAYER_DATA
 
void mission_event_set_directive_special(int event)
 
int snd_play_3d(game_snd *gs, vec3d *source_pos, vec3d *listen_pos, float radius, vec3d *source_vel, int looping, float vol_scale, int priority, vec3d *sound_fvec, float range_factor, int force, bool is_ambient)
 
void multi_team_send_update()
 
void send_accept_packet(int new_player_num, int code, int ingame_join_team)
 
mission_event Mission_events[MAX_MISSION_EVENTS]
 
void process_endgame_packet(ubyte *data, header *hinfo)
 
#define MULTI_SIG_NON_PERMANENT
 
void send_change_iff_packet(ushort net_signature, int new_team)
 
void weapon_hit(object *weapon_obj, object *other_obj, vec3d *hitpos, int quadrant=-1)
 
void send_player_order_packet(int type, int index, int cmd)
 
void multi_broadcast_stats(int stats_code)
 
#define COUNTERMEASURE_FIRED
 
#define SUBSYS_CARGO_REVEALED
 
#define MULTI_FS_SERVER_VERSION
 
#define MAX_MODEL_SUBSYSTEMS
 
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
 
void hud_squadmsg_send_to_all_fighters(int command, int player_num)
 
void send_netgame_end_error_packet(int notify_code, int err_code)
 
char filename[MAX_FILENAME_LEN]
 
#define WSS_REQUEST_PACKET
 
int multi_pack_unpack_position(int write, ubyte *data, vec3d *pos)
 
void set_primary_ammo(int ship_index, int requested_bank, int requested_ammo, int rearm_limit, bool update)
 
#define NETINFO_FLAG_MISSION_OK
 
void process_countermeasure_fired_packet(ubyte *data, header *hinfo)
 
void process_ship_status_packet(ubyte *data, header *hinfo)
 
void process_weapon_or_ammo_changed_packet(ubyte *data, header *hinfo)
 
#define NETGAME_END_ERROR
 
#define MULTI_OBSERVER(np)
 
void set_secondary_ammo(int ship_index, int requested_bank, int requested_ammo, int rearm_limit, bool update)
 
#define NETINFO_FLAG_INGAME_JOIN
 
#define FIRE_TURRET_WEAPON
 
#define PRIMARY_FIRED_NEW
 
void process_multi_pause_packet(ubyte *data, header *hinfo)
 
#define OBJ_VISIBILITY_DOT
 
void ai_do_objects_repairing_stuff(object *repaired_obj, object *repair_obj, int how)
 
#define HUD_SOURCE_HIDDEN
 
model_subsystem beam_sys_info
 
void send_subsystem_destroyed_packet(ship *shipp, int index, vec3d world_hitpos)
 
int psnet_send(net_addr *who_to, void *data, int len, int np_index)
 
#define AG_FLAG_STANDALONE
 
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
 
int engine_recharge_index
 
#define SF_PRIMARY_LINKED
 
void fill_net_addr(net_addr *addr, ubyte *address, ushort port)
 
int secondary_bank_weapons[MAX_SHIP_SECONDARY_BANKS]
 
net_player_server_info s_info
 
#define NETGAME_STATE_MISSION_SYNC
 
#define JOIN_DENY_JR_BAD_VERSION
 
float vm_vec_normalized_dir(vec3d *dest, const vec3d *end, const vec3d *start)
 
int Multi_connection_speed
 
void ai_post_process_mission()
 
#define REPAIR_INFO_WARP_ADD
 
#define STATS_MISSION_KILLS
 
void send_ship_weapon_change(ship *shipp, int what, int new_bank, int link_status)
 
void send_player_settings_packet(net_player *p)
 
void send_wss_update_packet(int team_num, ubyte *wss_data, int size)
 
float aggregate_current_hits
 
#define NETINFO_FLAG_HAXOR
 
void send_jump_into_mission_packet(net_player *pl)
 
char mission_name[NAME_LENGTH+1]
 
SCP_vector< int > medal_counts
 
#define OF_COULD_BE_PLAYER
 
void common_set_team_pointers(int team)
 
#define NETINFO_FLAG_GAME_HOST
 
#define MISSION_DESC_LENGTH
 
#define FORCE_MISSION_END
 
void process_game_query(ubyte *data, header *hinfo)
 
void send_mission_sync_packet(int mode, int start_campaign)
 
#define KICK_REASON_CANT_XFER
 
void do_subobj_destroyed_stuff(ship *ship_p, ship_subsys *subsys, vec3d *hitpos, bool no_explosion)
 
void send_sexp_packet(ubyte *sexp_packet, int num_ubytes)
 
void send_multi_pause_packet(int pause)
 
void process_subsystem_destroyed_packet(ubyte *data, header *hinfo)
 
void ship_cleanup(int shipnum, int cleanup_mode)
 
int multi_find_open_player_slot()
 
void process_netplayer_update_packet(ubyte *data, header *hinfo)
 
void send_mission_items(net_player *pl)
 
void hud_squadmsg_repair_rearm_abort(int toggle_state, object *obj)
 
void multi_respawn_check(object *objp)
 
#define MULTI_END_NOTIFY_FILE_REJECTED
 
#define NETPLAYER_IS_DEAD(player)
 
void process_cargo_hidden_packet(ubyte *data, header *hinfo)
 
void process_wss_request_packet(ubyte *data, header *hinfo)
 
int beam_fire(beam_fire_info *fire_info)
 
#define NETINFO_FLAG_ACCEPT_HOST
 
void flak_set_range(object *objp, float range)
 
int turret_num_firing_points
 
int m_dogfight_kills[MAX_PLAYERS]
 
int secondary_bank_ammo[MAX_SHIP_SECONDARY_BANKS]
 
char campaign_name[NAME_LENGTH+1]
 
beam_info * beam_info_override
 
void ship_set_new_ai_class(int ship_num, int new_ai_class)
 
void multi_io_send_reliable_force(net_player *pl)
 
void ship_recalc_subsys_strength(ship *shipp)
 
void process_player_settings_packet(ubyte *data, header *hinfo)
 
vec3d * vm_vec_unrotate(vec3d *dest, const vec3d *src, const matrix *m)
 
void multi_io_send_force(net_player *pl)
 
void multi_sync_start_countdown()
 
void process_client_update_packet(ubyte *data, header *hinfo)
 
void send_observer_update_packet()
 
object Objects[MAX_OBJECTS]
 
void process_firing_info_packet(ubyte *data, header *hinfo)
 
void multi_warpout_all_players()
 
char title[NAME_LENGTH+1]
 
vec3d targeting_laser_offset
 
int sexp_variable_count()
 
ushort Multi_current_file_checksum
 
int multi_rate_add(int np_index, char *type, int size)
 
#define MULTI_JOIN_RESTR_MODE_3
 
void send_wss_slots_data_packet(int team_num, int final, net_player *p, int std_request)
 
void mission_event_unset_directive_special(int event)
 
const char * XSTR(const char *str, int index)
 
void multi_kick_get_text(net_player *pl, int reason, char *str)
 
void send_force_end_mission_packet()
 
void multi_assign_player_ship(int net_player_num, object *objp, int ship_class)
 
#define DEBRIS_UPDATE_NUKE
 
#define MAX_MISSION_ITEMS_BYTES
 
#define NETINFO_FLAG_LIMBO
 
#define MULTI_MSG_HOSTILE
 
#define DEBRIS_UPDATE_REMOVE
 
void send_debris_update_packet(object *objp, int code)
 
void process_sw_query_packet(ubyte *data, header *hinfo)
 
#define JOIN_DENY_JR_PASSWD
 
#define NETINFO_FLAG_ACCEPT_CLIENT
 
void get_join_request(ubyte *data, int *size, join_request *jr)
 
char * ai_get_goal_target_name(const char *name, int *index)
 
void process_self_destruct_packet(ubyte *data, header *hinfo)
 
void process_ship_weapon_change(ubyte *data, header *hinfo)
 
void multi_ts_drop(int from_type, int from_index, int to_type, int to_index, int ship_class, int player_index)
 
void multi_team_handle_join(net_player *pl)
 
void _cdecl void void _cdecl Error(const char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
#define GM_STANDALONE_SERVER
 
#define JOIN_DENY_JR_RANK_LOW
 
void send_countermeasure_success_packet(int objnum)
 
void broadcast_game_query()
 
#define MULTI_END_NOTIFY_NONE
 
void process_change_ai_class_packet(ubyte *data, header *hinfo)
 
#define SECONDARY_FIRED_AI
 
void process_mission_sync_packet(ubyte *data, header *hinfo)
 
void stuff_netplayer_info(net_player *nplayer, net_addr *addr, int ship_class, player *pplayer)
 
#define WSS_UPDATE_PACKET
 
#define NETGAME_STATE_IN_MISSION
 
GLuint const GLchar * name
 
#define NETINFO_FLAG_CONNECTED
 
void multi_options_local_load(multi_local_options *options, net_player *pxo_pl)
 
void process_mission_item_packet(ubyte *data, header *hinfo)
 
void multi_server_update_player_weapons(net_player *pl, ship *shipp)
 
int psnet_broadcast(net_addr *who_to, void *data, int len)
 
void cmeasure_maybe_alert_success(object *objp)
If this is a player countermeasure, let the player know they evaded a missile. 
 
#define SHIP_WSTATE_CHANGE
 
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
#define JOIN_DENY_JR_STATE
 
int hud_squadmsg_send_ship_command(int shipnum, int command, int send_message, int update_history, int player_num)
 
int lookup_ship_status(net_player *p, int unique_id, int remove)
 
p_object * Arriving_support_ship
 
int Multi_ts_deleted_objnums[MULTI_TS_MAX_TVT_TEAMS *MULTI_TS_NUM_SHIP_SLOTS]
 
#define MULTI_SIG_ASTEROID
 
void get_net_addr(ubyte *data, int *size, net_addr *addr)
 
int multi_quit_game(int prompt, int notify_code, int err_code, int wsa_error)
 
GLboolean GLboolean GLboolean b
 
void send_weapon_or_ammo_changed_packet(int ship_index, int bank_type, int bank_number, int ammo_left, int rearm_limit, int new_weapon_index)
 
void send_game_info_packet()
 
void process_netgame_end_error_packet(ubyte *data, header *hinfo)
 
void send_netplayer_slot_packet()
 
#define MULTI_PERM_OBSERVER(np)
 
void process_subsystem_cargo_revealed_packet(ubyte *data, header *hinfo)
 
#define SFPF_TARGET_LOCKED
 
void send_ship_depart_packet(object *objp, int method)
 
SCP_vector< multi_create_info > Multi_create_campaign_list
 
#define EXTRA_DEATH_WASHED
 
void send_host_captain_change_packet(short player_id, int captain_change)
 
void send_flak_fired_packet(int ship_objnum, int subsys_index, int weapon_objnum, float flak_range)
 
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
 
#define WING_INDEX(wingp)
 
join_request Multi_restr_join_request
 
void multi_create_setup_list_data(int mode)
 
SCP_vector< multi_create_info > Multi_create_mission_list
 
void multi_pause_server_eval_request(net_player *pl, int pause)
 
void send_wing_create_packet(wing *wingp, int num_to_create, int pre_create_count)
 
void send_netgame_descript_packet(net_addr *addr, int code)
 
void process_leave_game_packet(ubyte *data, header *hinfo)
 
void obj_delete(int objnum)
 
void multi_options_update_netgame()
 
void process_bytes_recvd_packet(ubyte *data, header *hinfo)
 
void multi_process_valid_join_request(join_request *jr, net_addr *who_from, int ingame_join_team)
 
int ship_launch_countermeasure(object *objp, int rand_val)
 
void multi_pause_unpause()
 
#define NETPLAYER_SLOTS_P
 
int Multi_join_restr_mode
 
#define BFIF_IS_FIGHTER_BEAM
 
#define REPAIR_INFO_ABORT
 
void process_post_sync_data_packet(ubyte *data, header *hinfo)
 
int wl_drop(int from_bank, int from_list, int to_bank, int to_list, int ship_slot, int player_index, bool dont_play_sound)
 
void process_game_info_packet(ubyte *data, header *hinfo)
 
ubyte unreliable_buffer[MAX_PACKET_SIZE]
 
#define STATS_MISSION_CLASS_KILLS
 
void weapon_hit_do_sound(object *hit_obj, weapon_info *wip, vec3d *hitpos, bool is_armed)
 
#define SF_SECONDARY_DUAL_FIRE
 
int wep[MAX_SHIP_WEAPONS]
 
#define AIGF_DOCK_INDEXES_VALID
 
void multi_endgame_init()
 
#define NG_MODE_RESTRICTED
 
#define MULTI_MSG_MAX_TEXT_LEN
 
void process_wss_update_packet(ubyte *data, header *hinfo)
 
void process_player_order_packet(ubyte *data, header *hinfo)
 
#define REINFORCEMENT_AVAIL
 
void multi_join_eval_pong(net_addr *addr, fix pong_time)
 
void process_ship_depart_packet(ubyte *data, header *hinfo)
 
void delete_player(int player_num, int kicked_reason)
 
void mission_bring_in_support_ship(object *requester_objp)
 
#define MULTI_CONNECTED(np)
 
#define MULTI_END_NOTIFY_KICKED_CANT_XFER
 
int std_remove_player(net_player *p)
 
fix timer_get_fixed_seconds()
 
void hud_squadmsg_repair_rearm(int toggle_state, object *objp)
 
void process_asteroid_info(ubyte *data, header *hinfo)
 
void send_ingame_nak(int state, net_player *p)
 
void send_ship_status_packet(net_player *pl, button_info *bi, int id)
 
void send_player_stats_block_packet(net_player *pl, int stats_code, net_player *target, short offset)
 
#define MULTI_TS_NUM_SHIP_SLOTS
 
#define MULTI_SYNC_INGAME
 
void multi_handle_state_special()
 
#define MULTI_SYNC_POST_BRIEFING
 
#define MULTI_END_NOTIFY_KICKED_BAD_XFER
 
void process_deny_packet(ubyte *data, header *hinfo)
 
void process_ingame_nak(ubyte *data, header *hinfo)
 
#define NETINFO_FLAG_RESPAWNING
 
void psnet_rel_connect_to_server(PSNET_SOCKET *socket, net_addr *server_addr)
 
void process_netplayer_slot_packet(ubyte *data, header *hinfo)
 
#define STATS_ALLTIME_KILLS
 
void ship_do_cargo_hidden(ship *shipp, int from_network)
 
void ship_hit_kill(object *ship_objp, object *other_obj, float percent_killed, int self_destruct)
 
#define JOIN_DENY_JR_TEMP_CLOSED
 
#define NETGAME_STATE_HOST_SETUP
 
#define NETPLAYER_STATE_WSS_ACK
 
void send_countermeasure_fired_packet(object *objp, int cmeasure_count, int rand_val)
 
unsigned int p_bonehead_hits
 
void send_pong(net_addr *addr)
 
#define MULTIPLAYER_MASTER
 
SCP_vector< ship_info > Ship_info
 
#define NETPLAYER_STATE_POST_DATA_ACK
 
void ai_do_objects_undocked_stuff(object *docker, object *dockee)
 
#define NETPLAYER_STATE_INGAME_SHIP_SELECT
 
#define MULTI_PAUSE_REQUEST
 
void fs2netd_send_game_request()
 
GLenum GLsizei GLenum GLenum const GLvoid * data
 
void multi_player_ships_available(int *team_0, int *team_1)
 
void send_accept_player_data(net_player *npp, int is_ingame)
 
int Multi_current_file_length
 
#define MLO_FLAG_LOCAL_BROADCAST
 
SCP_vector< float > shield_quadrant
 
int multi_create_player(int net_player_num, player *pl, const char *name, net_addr *addr, int ship_class, short id)
 
#define OF_SHOULD_BE_DEAD
 
char mission_desc[MISSION_DESC_LENGTH]
 
void process_emp_effect(ubyte *data, header *hinfo)
 
void shipfx_warpout_start(object *objp)
 
#define DEBRIS_UPDATE_UPDATE
 
void multi_campaign_start(char *filename)
 
char callsign[CALLSIGN_LEN+1]
 
void send_weapon_detonate_packet(object *objp)
 
wss_unit Wss_slots_teams[MAX_TVT_TEAMS][MAX_WSS_SLOTS]
 
object * multi_get_network_object(ushort net_signature)
 
void change_ship_type(int n, int ship_type, int by_sexp)
 
float vm_vec_dot(const vec3d *v0, const vec3d *v1)
 
void process_accept_player_data(ubyte *data, header *hinfo)
 
#define MULTI_END_NOTIFY_KICKED
 
GLenum GLuint GLenum GLsizei length
 
void send_asteroid_create(object *new_objp, object *parent_objp, int asteroid_type, vec3d *relvec)
 
void asteroid_hit(object *pasteroid_obj, object *other_obj, vec3d *hitpos, float damage)
 
void process_change_iff_packet(ubyte *data, header *hinfo)
 
#define STATS_DOGFIGHT_KILLS
 
active_game * multi_update_active_games(active_game *ag)
 
void multi_get_mission_checksum(const char *filename)
 
GLsizei GLsizei GLchar * source
 
void send_homing_weapon_info(int weapon_num)
 
#define NETGAME_STATE_ENDGAME
 
#define WEAPON_OR_AMMO_CHANGED
 
void send_mission_log_packet(int num)
 
int game_get_default_skill_level()
 
void multi_apply_ship_status(net_player *p, button_info *bi, int locally)
 
void ship_self_destruct(object *objp)
 
#define ACK_FILE_ACCEPTED
 
void send_debrief_info(int stage_count[], int *stages[])
 
void multi_jw_handle_join(net_player *pl)
 
#define AI_GOAL_REARM_REPAIR
 
void send_change_iff_color_packet(ushort net_signature, int observer_team, int observed_team, int alternate_iff_color)
 
int ship_index[MAX_SHIPS_PER_WING]
 
void add_shield_point_multi(int objnum, int tri_num, vec3d *hit_pos)
 
#define KICK_REASON_INGAME_ENDED
 
void multi_campaign_next_mission()
 
void multi_set_network_signature(ushort signature, int what_kind)
 
void HUD_printf(const char *format,...)
 
void process_weapon_detonate_packet(ubyte *data, header *hinfo)
 
#define MISSION_LOG_ENTRY
 
#define AG_FLAG_CONNECTION_BIT
 
#define REPAIR_INFO_BEGIN
 
#define JOIN_DENY_JR_BANNED
 
int ship_name_lookup(const char *name, int inc_players)
 
void ship_do_cap_subsys_cargo_hidden(ship *shipp, ship_subsys *subsys, int from_network)
 
server_item * Game_server_head
 
void process_accept_packet(ubyte *data, header *hinfo)
 
int parse_wing_create_ships(wing *wingp, int num_to_create, int force, int specific_instance)
Tries to create a wing of ships. 
 
int multi_can_message(net_player *p)
 
void hud_update_reticle(player *pp)
 
void process_player_pain_packet(ubyte *data, header *hinfo)
 
#define ABORT_REARM_REPAIR_ITEM
 
int std_connect_set_connect_count()
 
void process_jump_into_mission_packet(ubyte *data, header *hinfo)
 
void gamesnd_play_iface(int n)
 
void process_cargo_revealed_packet(ubyte *data, header *hinfo)
 
#define NETINFO_FLAG_ACCEPT_OBSERVER
 
#define JOIN_DENY_JR_RANK_HIGH
 
#define AI_GOAL_DESTROY_SUBSYSTEM
 
void process_wss_slots_data_packet(ubyte *data, header *hinfo)
 
#define NOTIFY_NEW_PLAYER
 
void multi_io_send_buffered_packets()
 
net_addr Multi_restr_addr
 
void multi_ping_eval_pong(ping_struct *ps)
 
void emp_start_ship(object *ship_objp, float intensity, float time)
 
void multi_ts_sync_interface()
 
void send_wss_request_packet(short player_id, int from_slot, int from_index, int to_slot, int to_index, int wl_ship_slot, int ship_class, int mode, net_player *p)
 
GLenum const GLvoid * addr
 
#define NETGAME_STATE_FORMING
 
void send_leave_game_packet(short player_id, int kicked_reason, net_player *target)
 
void process_mission_goal_info_packet(ubyte *data, header *hinfo)
 
void process_player_stats_block_packet(ubyte *data, header *hinfo)
 
#define INGAME_JOIN_FLAG_PICK_SHIP
 
void multi_common_add_text(const char *str, int auto_scroll)
 
void process_join_packet(ubyte *data, header *hinfo)
 
#define SF_FROM_PLAYER_WING
 
int multi_find_player_by_object(object *objp)
 
int parse_create_object(p_object *pobjp)
 
#define MULTI_IS_TRACKER_GAME
 
char title[NAME_LENGTH+1]
 
net_player Net_players[MAX_PLAYERS]
 
void multi_common_set_text(const char *str, int auto_scroll)
 
unsigned int ms_shots_hit
 
void gameseq_post_event(int event)
 
#define MLO_FLAG_FLUSH_CACHE
 
int shield_recharge_index
 
#define JOIN_DENY_JR_CLOSED
 
void process_file_sig_packet(ubyte *data, header *hinfo)
 
#define MULTI_QUERY_RESTR_STAMP
 
#define COUNTERMEASURE_NEW
 
sound to indicate voice is about to start 
 
void weapon_detonate(object *objp)
 
#define CLIENT_REPAIR_INFO
 
void send_firing_info_packet()
 
multi_global_options Multi_options_g
 
char ship_name[NAME_LENGTH]
 
#define JOIN_DENY_JR_TYPE
 
void debrief_set_multi_clients(int stage_count, int active_stages[])
 
unsigned int s_bonehead_hits
 
void send_post_sync_data_packet(net_player *p, int std_request)
 
void process_file_sig_request(ubyte *data, header *hinfo)
 
int multi_find_player_by_net_signature(ushort net_signature)
 
void send_lightning_packet(int bolt_type_internal, vec3d *start, vec3d *strike)
 
#define NETPLAYER_STATE_STD_HOST_SETUP
 
#define JOIN_QUERY_RESTRICTED
 
void send_mission_list_request(int what)
 
#define NET_PLAYER_NUM(np)
 
void send_deny_packet(net_addr *addr, int code)
 
multi_local_options options
 
#define COUNTERMEASURE_SUCCESS
 
void send_subsystem_cargo_hidden_packet(ship *shipp, int index)
 
void process_netgame_descript_packet(ubyte *data, header *hinfo)
 
int current_target_is_locked
 
void send_endgame_packet(net_player *pl)
 
void send_player_pain_packet(net_player *pl, int weapon_info_index, float damage, vec3d *force, vec3d *hitpos, int quadrant_num)
 
#define MAX_DEBRIEF_STAGES
 
#define REPAIR_INFO_WARP_REMOVE
 
void process_mission_log_packet(ubyte *data, header *hinfo)
 
void send_new_player_packet(int new_player_num, net_player *target)
 
#define MULTI_END_ERROR_CONNECT_FAIL
 
void ship_subsystem_set_new_ai_class(int ship_num, char *subsystem, int new_ai_class)
 
void send_file_sig_packet(ushort sum_sig, int length_sig)
 
#define NG_FLAG_INGAME_JOINING
 
int multi_can_end_mission(net_player *p)