Restructure gameseq.c for merging

This commit is contained in:
Kp 2013-11-10 03:31:22 +00:00
parent 67407d211e
commit c90ade08fe
2 changed files with 86 additions and 112 deletions

View file

@ -99,8 +99,10 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "segment.h"
#include "gameseg.h"
#define GLITZ_BACKGROUND Menu_pcx_name
static int AdvanceLevel(int secret_flag);
static void StartLevel(int random);
static void StartLevel(int random_flag);
static void copy_defaults_to_robot_all(void);
//Current_level_num starts at 1 for the first level
@ -121,6 +123,7 @@ obj_position Player_init[MAX_PLAYERS];
// Global variables telling what sort of game we have
int NumNetPlayerPositions = -1;
int Do_appearance_effect=0;
static void verify_console_object()
{
@ -159,9 +162,7 @@ static int count_number_of_hostages()
return count;
}
void
static gameseq_init_network_players()
static void gameseq_init_network_players()
{
int i,k,j;
@ -266,7 +267,7 @@ static void init_ammo_and_energy(void)
// Setup player for new level (After completion of previous level)
void init_player_stats_level(int secret_flag)
{
(void)secret_flag;
secret_flag = 0;
// int i;
Players[Player_num].last_score = Players[Player_num].score;
@ -278,8 +279,6 @@ void init_player_stats_level(int secret_flag)
Players[Player_num].hours_level = 0;
}
init_ammo_and_energy();
Players[Player_num].killer_objnum = -1;
Players[Player_num].num_kills_level = 0;
@ -290,18 +289,21 @@ void init_player_stats_level(int secret_flag)
Players[Player_num].hostages_total += Players[Player_num].hostages_level;
Players[Player_num].hostages_on_board = 0;
if (!secret_flag) {
init_ammo_and_energy();
Players[Player_num].flags &= (~KEY_BLUE);
Players[Player_num].flags &= (~KEY_RED);
Players[Player_num].flags &= (~KEY_GOLD);
Players[Player_num].flags &= (~PLAYER_FLAGS_INVULNERABLE);
Players[Player_num].flags &= (~PLAYER_FLAGS_CLOAKED);
Players[Player_num].flags &= ~(PLAYER_FLAGS_INVULNERABLE | PLAYER_FLAGS_CLOAKED);
Players[Player_num].cloak_time = 0;
Players[Player_num].invulnerable_time = 0;
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
Players[Player_num].flags |= (KEY_BLUE | KEY_RED | KEY_GOLD);
}
Player_is_dead = 0; // Added by RH
Dead_player_camera = NULL;
@ -326,7 +328,6 @@ void init_player_stats_new_ship(ubyte pnum)
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
@ -334,6 +335,7 @@ void init_player_stats_new_ship(ubyte pnum)
Player_exploded = 0;
Player_eggs_dropped = 0;
Dead_player_camera = 0;
Global_laser_firing_count=0;
}
Players[pnum].energy = INITIAL_ENERGY;
@ -570,12 +572,12 @@ void LoadLevel(int level_num,int page_in_textures)
timer_delay(F1_0);
#endif
my_segments_checksum = netmisc_calc_checksum();
load_endlevel_data(level_num);
load_custom_data(level_name);
my_segments_checksum = netmisc_calc_checksum();
reset_network_objects();
Players[Player_num] = save_player;
@ -644,7 +646,7 @@ void DoEndLevelScoreGlitz(int network)
char endgame_text[64];
#define N_GLITZITEMS 9
char m_str[N_GLITZITEMS][30];
newmenu_item m[9];
newmenu_item m[N_GLITZITEMS];
int i,c;
char title[128];
int is_last_level;
@ -660,9 +662,9 @@ void DoEndLevelScoreGlitz(int network)
} else
skill_points = 0;
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
shield_points = f2i(Players[Player_num].shields) * 10 * (Difficulty_level+1);
energy_points = f2i(Players[Player_num].energy) * 5 * (Difficulty_level+1);
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
} else {
skill_points = 0;
shield_points = 0;
@ -702,12 +704,9 @@ void DoEndLevelScoreGlitz(int network)
sprintf(m_str[c++], "%s%i", TXT_TOTAL_SCORE, Players[Player_num].score);
for (i=0; i<c; i++) {
m[i].type = NM_TYPE_TEXT;
m[i].text = m_str[i];
nm_set_item_text(& m[i], m_str[i]);
}
// m[c].type = NM_TYPE_MENU; m[c++].text = "Ok";
if (Current_level_num < 0)
sprintf(title,"%s%s %d %s\n %s %s",is_last_level?"\n\n\n":"\n",TXT_SECRET_LEVEL, -Current_level_num, TXT_COMPLETE, Current_level_name, TXT_DESTROYED);
else
@ -716,12 +715,12 @@ void DoEndLevelScoreGlitz(int network)
Assert(c <= N_GLITZITEMS);
if ( network && (Game_mode & GM_NETWORK) )
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, Menu_pcx_name);
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, GLITZ_BACKGROUND);
else
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, Menu_pcx_name);
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, GLITZ_BACKGROUND);
}
static int draw_rock(newmenu *menu, d_event *event, grs_bitmap *background)
static int draw_endlevel_background(newmenu *menu, d_event *event, grs_bitmap *background)
{
menu = menu;
@ -750,30 +749,29 @@ static void do_screen_message(const char *fmt, ...)
return;
gr_init_bitmap_data(&background);
if (pcx_read_bitmap(Menu_pcx_name, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
if (pcx_read_bitmap(GLITZ_BACKGROUND, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
return;
gr_palette_load(gr_palette);
va_start(arglist, fmt);
vsprintf(msg, fmt, arglist);
vsnprintf(msg, sizeof(msg), fmt, arglist);
va_end(arglist);
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_rock, &background, 1, TXT_OK, msg);
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_endlevel_background, &background, 1, TXT_OK, msg);
gr_free_bitmap_data(&background);
}
//called when the player has finished a level
void PlayerFinishedLevel(int secret_flag)
{
int rval;
int was_multi = 0;
if (Game_wind)
window_set_visible(Game_wind, 0);
//credit the player for hostages
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
int rval;
int was_multi = 0;
if (!(Game_mode & GM_MULTI) && (secret_flag)) {
newmenu_item m[1];
@ -943,7 +941,6 @@ void DoPlayerDead()
}
if ( Control_center_destroyed ) {
int rval;
//clear out stuff so no bonus
Players[Player_num].hostages_on_board = 0;
@ -953,6 +950,7 @@ void DoPlayerDead()
do_screen_message(TXT_DIED_IN_MINE); // Give them some indication of what happened
int rval;
if (Current_level_num == Last_level) {
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
{
@ -1013,13 +1011,15 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
newdemo_record_start_frame(FrameTime );
}
LoadLevel(level_num, page_in_textures);
LoadLevel(level_num,page_in_textures);
Assert(Current_level_num == level_num); //make sure level set right
gameseq_init_network_players(); // Initialize the Players array for
// this level
Viewer = &Objects[Players[Player_num].objnum];
if (Game_mode & GM_NETWORK)
{
if(multi_level_sync()) // After calling this, Player_num is set
@ -1045,8 +1045,6 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
Players[i].flags |= Netgame.player_flags[i];
}
Viewer = &Objects[Players[Player_num].objnum];
if (Game_mode & GM_MULTI)
{
multi_prep_level(); // Removes robots from level if necessary
@ -1123,13 +1121,13 @@ void StartNewLevel(int level_num)
}
//initialize the player object position & orientation (at start of game, or new ship)
static void InitPlayerPosition(int random)
static void InitPlayerPosition(int random_flag)
{
int NewPlayer=0;
if (! ((Game_mode & GM_MULTI) && !(Game_mode&GM_MULTI_COOP)) ) // If not deathmatch
NewPlayer = Player_num;
else if (random == 1)
else if (random_flag == 1)
{
int i, trys=0;
fix closest_dist = 0x7ffffff, dist;
@ -1150,16 +1148,15 @@ static void InitPlayerPosition(int random)
}
}
}
} while ( (closest_dist<i2f(15*20)) && (trys<MAX_PLAYERS*2) );
}
else
{
else {
// If deathmatch and not random, positions were already determined by sync packet
reset_player_object();
reset_cruise();
return;
}
Assert(NewPlayer >= 0);
Assert(NewPlayer < NumNetPlayerPositions);
ConsoleObject->pos = Player_init[NewPlayer].pos;
@ -1200,15 +1197,13 @@ static void copy_defaults_to_robot_all(void)
copy_defaults_to_robot(&Objects[i]);
}
int Do_appearance_effect=0;
// -----------------------------------------------------------------------------------------------------
//called when the player is starting a level (new game or new ship)
static void StartLevel(int random)
static void StartLevel(int random_flag)
{
Assert(!Player_is_dead);
InitPlayerPosition(random);
InitPlayerPosition(random_flag);
verify_console_object();
@ -1237,11 +1232,4 @@ static void StartLevel(int random)
reset_rear_view();
Auto_fire_fusion_cannon_time = 0;
Fusion_charge = 0;
if (!(Game_mode & GM_MULTI)) // stuff for Singleplayer only
{
}
}

View file

@ -104,13 +104,15 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "segment.h"
#include "gameseg.h"
#define GLITZ_BACKGROUND STARS_BACKGROUND
static void StartNewLevelSecret(int level_num, int page_in_textures);
static void InitPlayerPosition(int random_flag);
static void DoEndGame(void);
static void filter_objects_from_level();
static void AdvanceLevel(int secret_flag);
static void StartLevel(int random_flag);
static void filter_objects_from_level();
static void copy_defaults_to_robot_all(void);
//Current_level_num starts at 1 for the first level
@ -123,16 +125,13 @@ char Current_level_name[LEVEL_NAME_LEN];
int N_players=1; // Number of players ( >1 means a net game, eh?)
int Player_num=0; // The player number who is on the console.
player Players[MAX_PLAYERS+4]; // Misc player info
int First_secret_visit = 1;
obj_position Player_init[MAX_PLAYERS];
// Global variables telling what sort of game we have
int NumNetPlayerPositions = -1;
int Do_appearance_effect=0;
int First_secret_visit = 1;
//--------------------------------------------------------------------
static void verify_console_object()
{
@ -140,7 +139,7 @@ static void verify_console_object()
Assert( Players[Player_num].objnum > -1 );
ConsoleObject = &Objects[Players[Player_num].objnum];
Assert( ConsoleObject->type==OBJ_PLAYER );
Assert( ConsoleObject->id==Player_num );
Assert( get_player_id(ConsoleObject)==Player_num );
}
static int count_number_of_robots()
@ -173,8 +172,7 @@ static int count_number_of_hostages()
}
//added 10/12/95: delete buddy bot if coop game. Probably doesn't really belong here. -MT
void
static gameseq_init_network_players()
static void gameseq_init_network_players()
{
int i,k,j;
@ -195,7 +193,7 @@ static gameseq_init_network_players()
Player_init[k].orient = Objects[i].orient;
Player_init[k].segnum = Objects[i].segnum;
Players[k].objnum = i;
Objects[i].id = k;
set_player_id(&Objects[i], k);
k++;
}
else
@ -203,7 +201,7 @@ static gameseq_init_network_players()
j++;
}
if ((Objects[i].type==OBJ_ROBOT) && (Robot_info[get_robot_id(&Objects[i])].companion) && (Game_mode & GM_MULTI))
if ((Objects[i].type==OBJ_ROBOT) && robot_is_companion(&Robot_info[get_robot_id(&Objects[i])]) && (Game_mode & GM_MULTI))
obj_delete(i); //kill the buddy in netgames
}
@ -315,9 +313,8 @@ void init_player_stats_level(int secret_flag)
Players[Player_num].flags &= (~KEY_RED);
Players[Player_num].flags &= (~KEY_GOLD);
Players[Player_num].flags &= ~(PLAYER_FLAGS_INVULNERABLE |
PLAYER_FLAGS_CLOAKED |
PLAYER_FLAGS_MAP_ALL);
Players[Player_num].flags &= ~(PLAYER_FLAGS_INVULNERABLE | PLAYER_FLAGS_CLOAKED);
Players[Player_num].flags &= ~(PLAYER_FLAGS_MAP_ALL);
Players[Player_num].cloak_time = 0;
Players[Player_num].invulnerable_time = 0;
@ -358,16 +355,16 @@ void init_player_stats_new_ship(ubyte pnum)
}
Primary_weapon = 0;
Secondary_weapon = 0;
for (i=0; i<MAX_PRIMARY_WEAPONS; i++)
Primary_last_was_super[i] = 0;
for (i=1; i<MAX_SECONDARY_WEAPONS; i++)
Secondary_last_was_super[i] = 0;
dead_player_end(); //player no longer dead
Player_is_dead = 0;
Player_exploded = 0;
Player_eggs_dropped = 0;
Dead_player_camera = 0;
Global_laser_firing_count=0;
for (i=0; i<MAX_PRIMARY_WEAPONS; i++)
Primary_last_was_super[i] = 0;
for (i=1; i<MAX_SECONDARY_WEAPONS; i++)
Secondary_last_was_super[i] = 0;
Afterburner_charge = 0;
Controls.afterburner_state = 0;
Last_afterburner_state = 0;
@ -387,7 +384,8 @@ void init_player_stats_new_ship(ubyte pnum)
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_AFTERBURNER | PLAYER_FLAGS_CLOAKED | PLAYER_FLAGS_INVULNERABLE | PLAYER_FLAGS_MAP_ALL | PLAYER_FLAGS_CONVERTER | PLAYER_FLAGS_AMMO_RACK | PLAYER_FLAGS_HEADLIGHT | PLAYER_FLAGS_HEADLIGHT_ON | PLAYER_FLAGS_FLAG);
Players[pnum].flags &= ~(PLAYER_FLAGS_QUAD_LASERS | PLAYER_FLAGS_CLOAKED | PLAYER_FLAGS_INVULNERABLE);
Players[pnum].flags &= ~(PLAYER_FLAGS_AFTERBURNER | PLAYER_FLAGS_MAP_ALL | PLAYER_FLAGS_CONVERTER | PLAYER_FLAGS_AMMO_RACK | PLAYER_FLAGS_HEADLIGHT | PLAYER_FLAGS_HEADLIGHT_ON | PLAYER_FLAGS_FLAG);
Players[pnum].cloak_time = 0;
Players[pnum].invulnerable_time = 0;
Players[pnum].homing_object_dist = -F1_0; // Added by RH
@ -402,7 +400,7 @@ void editor_reset_stuff_on_level()
init_player_stats_level(0);
Viewer = ConsoleObject;
ConsoleObject = Viewer = &Objects[Players[Player_num].objnum];
ConsoleObject->id=Player_num;
set_player_id(ConsoleObject, Player_num);
ConsoleObject->control_type = CT_FLYING;
ConsoleObject->movement_type = MT_PHYSICS;
Game_suspended = 0;
@ -431,8 +429,6 @@ void editor_reset_stuff_on_level()
static void DoGameOver()
{
// nm_messagebox( TXT_GAME_OVER, 1, TXT_OK, "" );
if (PLAYING_BUILTIN_MISSION)
scores_maybe_add_player(0);
@ -540,6 +536,15 @@ void create_player_appearance_effect(object *player_obj)
// New Game sequencing functions
//
//get level filename. level numbers start at 1. Secret levels are -1,-2,-3
static char *get_level_file(int level_num)
{
if (level_num<0) //secret level
return Secret_level_names[-level_num-1];
else //normal level
return Level_names[level_num-1];
}
// routine to calculate the checksum of the segments.
static void do_checksum_calc(ubyte *b, int len, unsigned int *s1, unsigned int *s2)
{
@ -594,8 +599,8 @@ static ushort netmisc_calc_checksum()
s = INTEL_SHORT(Segments[i].verts[j]);
do_checksum_calc((ubyte *)&s, 2, &sum1, &sum2);
}
t = INTEL_INT(Segments[i].objects);
do_checksum_calc((ubyte *)&t, 4, &sum1, &sum2);
s = INTEL_SHORT(Segments[i].objects);
do_checksum_calc((ubyte *)&s, 2, &sum1, &sum2);
}
sum2 %= 255;
return ((sum1<<8)+ sum2);
@ -608,10 +613,7 @@ void load_level_robots(int level_num)
Assert(level_num <= Last_level && level_num >= Last_secret_level && level_num != 0);
if (level_num<0) //secret level
level_name = Secret_level_names[-level_num-1];
else //normal level
level_name = Level_names[level_num-1];
level_name = get_level_file(level_num);
if (Robot_replacements_loaded) {
free_polygon_models();
@ -626,21 +628,17 @@ void LoadLevel(int level_num,int page_in_textures)
{
char *level_name;
player save_player;
int load_ret;
save_player = Players[Player_num];
Assert(level_num <= Last_level && level_num >= Last_secret_level && level_num != 0);
if (level_num<0) //secret level
level_name = Secret_level_names[-level_num-1];
else //normal level
level_name = Level_names[level_num-1];
level_name = get_level_file(level_num);
gr_set_current_canvas(NULL);
gr_clear_canvas(BM_XRGB(0, 0, 0)); //so palette switching is less obvious
load_ret = load_level(level_name); //actually load the data from disk!
int load_ret = load_level(level_name); //actually load the data from disk!
if (load_ret)
Error("Couldn't load level file <%s>, error = %d",level_name,load_ret);
@ -677,8 +675,6 @@ void LoadLevel(int level_num,int page_in_textures)
songs_play_level_song( Current_level_num, 0 );
gr_palette_load(gr_palette); //actually load the palette
// WIN(HideCursorW());
}
//sets up Player_num & ConsoleObject
@ -696,7 +692,7 @@ void InitPlayerObject()
ConsoleObject = &Objects[Players[Player_num].objnum];
ConsoleObject->type = OBJ_PLAYER;
ConsoleObject->id = Player_num;
set_player_id(ConsoleObject, Player_num);
ConsoleObject->control_type = CT_FLYING;
ConsoleObject->movement_type = MT_PHYSICS;
}
@ -738,9 +734,9 @@ void DoEndLevelScoreGlitz(int network)
int endgame_points;
char all_hostage_text[64];
char endgame_text[64];
#define N_GLITZITEMS 11
#define N_GLITZITEMS 9
char m_str[N_GLITZITEMS][30];
newmenu_item m[N_GLITZITEMS+1];
newmenu_item m[N_GLITZITEMS];
int i,c;
char title[128];
int is_last_level;
@ -760,9 +756,9 @@ void DoEndLevelScoreGlitz(int network)
} else
skill_points = 0;
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
shield_points = f2i(Players[Player_num].shields) * 5 * mine_level;
energy_points = f2i(Players[Player_num].energy) * 2 * mine_level;
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
shield_points -= shield_points % 50;
energy_points -= energy_points % 50;
@ -816,10 +812,10 @@ void DoEndLevelScoreGlitz(int network)
Assert(c <= N_GLITZITEMS);
if ( network && (Game_mode & GM_NETWORK) )
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, STARS_BACKGROUND);
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, GLITZ_BACKGROUND);
else
// NOTE LINK TO ABOVE!!!
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, STARS_BACKGROUND);
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, GLITZ_BACKGROUND);
}
// -----------------------------------------------------------------------------------------------------
@ -868,10 +864,10 @@ int p_secret_level_destroyed(void)
#define TXT_SECRET_RETURN "Returning to level %i", Entered_from_level
#define TXT_SECRET_ADVANCE "Base level destroyed.\nAdvancing to level %i", Entered_from_level+1
static int draw_stars_bg(newmenu *menu, d_event *event, grs_bitmap *background)
static int draw_endlevel_background(newmenu *menu, d_event *event, grs_bitmap *background)
{
menu = menu;
switch (event->type)
{
case EVENT_WINDOW_DRAW:
@ -897,7 +893,7 @@ static void do_screen_message(const char *fmt, ...)
return;
gr_init_bitmap_data(&background);
if (pcx_read_bitmap(STARS_BACKGROUND, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
if (pcx_read_bitmap(GLITZ_BACKGROUND, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
return;
gr_palette_load(gr_palette);
@ -906,7 +902,7 @@ static void do_screen_message(const char *fmt, ...)
vsnprintf(msg, sizeof(msg), fmt, arglist);
va_end(arglist);
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_stars_bg, &background, 1, TXT_OK, msg);
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_endlevel_background, &background, 1, TXT_OK, msg);
gr_free_bitmap_data(&background);
}
@ -1121,14 +1117,14 @@ void EnterSecretLevel(void)
//called when the player has finished a level
void PlayerFinishedLevel(int secret_flag)
{
Assert(!secret_flag);
if (Game_wind)
window_set_visible(Game_wind, 0);
//credit the player for hostages
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
Assert(!secret_flag);
if (Game_mode & GM_NETWORK)
Players[Player_num].connected = CONNECT_WAITING; // Finished but did not die
@ -1141,17 +1137,9 @@ void PlayerFinishedLevel(int secret_flag)
reset_time();
}
#if defined(D2_OEM) || defined(COMPILATION)
#define MOVIE_REQUIRED 0
#else
#define MOVIE_REQUIRED 1
#endif
#ifdef D2_OEM
#define ENDMOVIE "endo"
#else
#define ENDMOVIE "end"
#endif
//called when the player has finished the last level
static void DoEndGame(void)
@ -1210,8 +1198,6 @@ static void DoEndGame(void)
// Return true if game over.
static void AdvanceLevel(int secret_flag)
{
int result;
Assert(!secret_flag);
if (Current_level_num != Last_level) {
@ -1232,6 +1218,7 @@ static void AdvanceLevel(int secret_flag)
#endif
if (Game_mode & GM_MULTI) {
int result;
result = multi_endlevel(&secret_flag); // Wait for other players to reach this point
if (result) // failed to sync
{
@ -1253,7 +1240,7 @@ static void AdvanceLevel(int secret_flag)
if (Current_level_num < 0 && EMULATING_D1)
{
Next_level_num = Entered_from_level+1; //assume go to next normal level
} else {
} else {
Next_level_num = Current_level_num+1; //assume go to next normal level
}
// END NMN
@ -1438,10 +1425,10 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
init_cockpit();
init_robots_for_level();
init_ai_objects();
init_smega_detonates();
init_morphs();
init_all_matcens();
reset_palette_add();
init_smega_detonates();
init_thief_for_level();
init_stuck_objects();
if (!(Game_mode & GM_MULTI))
@ -1485,12 +1472,12 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
void bash_to_shield (int i,const char *s)
{
int type=Objects[i].id;
enum powerup_type_t type = get_powerup_id(&Objects[i]);
PowerupsInMine[type]=MaxPowerupsAllowed[type]=0;
Objects[i].id = POW_SHIELD_BOOST;
Objects[i].rtype.vclip_info.vclip_num = Powerup_info[Objects[i].id].vclip_num;
set_powerup_id(&Objects[i], POW_SHIELD_BOOST);
Objects[i].rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(&Objects[i])].vclip_num;
Objects[i].rtype.vclip_info.frametime = Vclip[Objects[i].rtype.vclip_info.vclip_num].frame_time;
}
@ -1658,7 +1645,7 @@ void copy_defaults_to_robot(object *objp)
int objid;
Assert(objp->type == OBJ_ROBOT);
objid = objp->id;
objid = get_robot_id(objp);
Assert(objid < N_robot_types);
robptr = &Robot_info[objid];
@ -1690,14 +1677,13 @@ void copy_defaults_to_robot(object *objp)
// Copy all values from the robot info structure to all instances of robots.
// This allows us to change bitmaps.tbl and have these changes manifested in existing robots.
// This function should be called at level load time.
void copy_defaults_to_robot_all()
static void copy_defaults_to_robot_all(void)
{
int i;
for (i=0; i<=Highest_object_index; i++)
if (Objects[i].type == OBJ_ROBOT)
copy_defaults_to_robot(&Objects[i]);
}
// -----------------------------------------------------------------------------------------------------