diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 503aa38af..22b4849b2 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ D1X-Rebirth Changelog 20100904 -------- main/titles.c: In briefing_init() init robot angles properly because in show_spinning_robot_frame() robot_angles.h is incremented only but not initialized +main/game.c, main/game.h, main/gameseq.c, main/state.c: Removed Fusion_last_sound_time and made Fusion_next_sound_time static inside FireLaser() with it's own fallback function for bogus timer values - should make this code insusceptible against errors - last but not least: minus two globals 20100903 -------- diff --git a/main/game.c b/main/game.c index bc0816e26..2f257bb58 100644 --- a/main/game.c +++ b/main/game.c @@ -139,8 +139,6 @@ char faded_in; int Game_suspended=0; //if non-zero, nothing moves but player fix Auto_fire_fusion_cannon_time = 0; fix Fusion_charge = 0; -fix Fusion_next_sound_time = 0; -fix Fusion_last_sound_time = 0; int Game_turbo_mode = 0; int Game_mode = GM_GAME_OVER; int Global_laser_firing_count = 0; @@ -1266,6 +1264,8 @@ void FireLaser() if ((Players[Player_num].energy < F1_0*2) && (Auto_fire_fusion_cannon_time == 0)) { Global_laser_firing_count = 0; } else { + static int Fusion_next_sound_time = 0; + if (Fusion_charge == 0) Players[Player_num].energy -= F1_0*2; @@ -1283,8 +1283,8 @@ void FireLaser() else PALETTE_FLASH_ADD(Fusion_charge >> 11, Fusion_charge >> 11, 0); - if (GameTime < Fusion_last_sound_time) //gametime has wrapped - Fusion_next_sound_time = Fusion_last_sound_time = GameTime; + if (Fusion_next_sound_time > GameTime + F1_0/8 + D_RAND_MAX/4) //gametime has wrapped or something is screwed + Fusion_next_sound_time = GameTime - 1; if (Fusion_next_sound_time < GameTime) { if (Fusion_charge > F1_0*2) { @@ -1302,7 +1302,6 @@ void FireLaser() multi_send_play_sound(SOUND_FUSION_WARMUP, F1_0); #endif } - Fusion_last_sound_time = GameTime; Fusion_next_sound_time = GameTime + F1_0/8 + d_rand()/4; } } diff --git a/main/game.h b/main/game.h index 5ab00ca57..0311b2f85 100644 --- a/main/game.h +++ b/main/game.h @@ -44,7 +44,6 @@ extern fix Last_laser_fired_time; extern fix Next_missile_fire_time; // Time at which player can next fire his selected missile. extern fix Next_flare_fire_time; extern fix Laser_delay_time; // Delay between laser fires. -extern fix Fusion_next_sound_time; extern int Cheats_enabled; // bits for FixedStep diff --git a/main/gameseq.c b/main/gameseq.c index d9d05457a..8038d8338 100644 --- a/main/gameseq.c +++ b/main/gameseq.c @@ -339,7 +339,7 @@ void init_player_stats_level() Players[Player_num].homing_object_dist = -F1_0; // Added by RH // properly init these cursed globals - Fusion_next_sound_time = Next_flare_fire_time = Last_laser_fired_time = Next_laser_fire_time = Next_missile_fire_time = GameTime; + Next_flare_fire_time = Last_laser_fired_time = Next_laser_fire_time = Next_missile_fire_time = GameTime; init_gauges(); } diff --git a/main/state.c b/main/state.c index 1e749c868..f20376839 100644 --- a/main/state.c +++ b/main/state.c @@ -869,7 +869,6 @@ RetryObjectLoading: PHYSFS_read(fp, Automap_visited, sizeof(ubyte), MAX_SEGMENTS); // Restore hacked up weapon system stuff. - Fusion_next_sound_time = GameTime; Auto_fire_fusion_cannon_time = 0; Next_laser_fire_time = GameTime; Next_missile_fire_time = GameTime;