// Setup player for a brand-new ship void init_player_stats_new_ship(ubyte pnum) { int i; if (pnum == Player_num) { if (Newdemo_state == ND_STATE_RECORDING) { newdemo_record_laser_level(Players[Player_num].laser_level, 0); newdemo_record_player_weapon(0, 0); newdemo_record_player_weapon(1, 0); } Global_laser_firing_count=0; Primary_weapon = 0; Secondary_weapon = 0; dead_player_end(); //player no longer dead Player_is_dead = 0; Player_exploded = 0; Player_eggs_dropped = 0; int delete_camera = 1; #ifdef NETWORK if ((Game_mode & GM_MULTI) && (Netgame.SpawnStyle == SPAWN_STYLE_PREVIEW)) { delete_camera = 0; } #endif if(delete_camera) Dead_player_camera = 0; } Players[pnum].energy = INITIAL_ENERGY; Players[pnum].shields = StartingShields; Players[pnum].laser_level = 0; Players[pnum].killer_objnum = -1; Players[pnum].hostages_on_board = 0; for (i=0; i<MAX_PRIMARY_WEAPONS; i++) Players[pnum].primary_ammo[i] = 0; for (i=1; i<MAX_SECONDARY_WEAPONS; i++) Players[pnum].secondary_ammo[i] = 0; Players[pnum].secondary_ammo[0] = 2 + NDL - Difficulty_level; Players[pnum].primary_weapon_flags = HAS_LASER_FLAG; Players[pnum].secondary_weapon_flags = HAS_CONCUSSION_FLAG; Players[pnum].flags &= ~(PLAYER_FLAGS_QUAD_LASERS | PLAYER_FLAGS_CLOAKED | PLAYER_FLAGS_INVULNERABLE); Players[pnum].cloak_time = 0; Players[pnum].invulnerable_time = 0; Players[pnum].homing_object_dist = -F1_0; RespawningConcussions[pnum] = 0; digi_kill_sound_linked_to_object(Players[pnum].objnum); }
void kmatrix_view(int network) { kmatrix_screen *km; window *wind; int i = 0; MALLOC(km, kmatrix_screen, 1); if (!km) return; gr_init_bitmap_data(&km->background); if (pcx_read_bitmap(STARS_BACKGROUND, &km->background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE) { d_free(km); return; } gr_palette_load(gr_palette); km->network = network; km->end_time = -1; km->playing = 0; set_screen_mode( SCREEN_MENU ); game_flush_inputs(); for (i=0;i<MAX_PLAYERS;i++) digi_kill_sound_linked_to_object (Players[i].objnum); wind = window_create(&grd_curscreen->sc_canvas, 0, 0, SWIDTH, SHEIGHT, (int (*)(window *, d_event *, void *))kmatrix_handler, km); if (!wind) { d_free(km); return; } while (window_exists(wind)) event_process(); gr_free_bitmap_data(&km->background); d_free(km); }