diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index e123adaf..b68d82ae 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -818,7 +818,7 @@ timer_hud() hud thread destroy_on_intermission(); - level thread set_time_frozen_on_end_game(hud); + hud thread set_time_frozen_on_end_game(); flag_wait( "hud_visible" ); @@ -831,12 +831,12 @@ timer_hud() if ( !flag( "initial_blackscreen_passed" ) ) { - set_time_frozen(hud, 0, "initial_blackscreen_passed"); + hud set_time_frozen(0, "initial_blackscreen_passed"); } if ( getDvar( "g_gametype" ) == "zgrief" ) { - set_time_frozen(hud, 0); + hud set_time_frozen(0); } hud setTimerUp(0); @@ -869,7 +869,7 @@ round_timer_hud() hud thread destroy_on_intermission(); - level thread set_time_frozen_on_end_game(hud); + hud thread set_time_frozen_on_end_game(); flag_wait( "hud_visible" ); @@ -882,12 +882,12 @@ round_timer_hud() if ( !flag( "initial_blackscreen_passed" ) ) { - set_time_frozen(hud, 0, "initial_blackscreen_passed"); + hud set_time_frozen(0, "initial_blackscreen_passed"); } if ( getDvar( "g_gametype" ) == "zgrief" ) { - set_time_frozen(hud, 0); + hud set_time_frozen(0); } while (1) @@ -908,7 +908,7 @@ round_timer_hud() time = int((getTime() - hud.start_time) / 1000); - set_time_frozen(hud, time); + hud set_time_frozen(time); } } @@ -933,6 +933,8 @@ round_total_timer_hud() hud.foreground = 1; hud.label = &"Round Total: "; + hud endon("death"); + hud thread destroy_on_intermission(); fade_time = 0.5; @@ -942,7 +944,7 @@ round_total_timer_hud() time = int((getTime() - level.timer_hud_start_time) / 1000); - set_time_frozen(hud, time); + hud set_time_frozen(time); hud fadeOverTime(fade_time); hud.alpha = 0; @@ -952,18 +954,7 @@ round_total_timer_hud() hud destroy(); } -set_time_frozen_on_end_game(hud) -{ - level endon("intermission"); - - level waittill("end_game"); - - time = int((getTime() - hud.start_time) / 1000); - - set_time_frozen(hud, time); -} - -set_time_frozen(hud, time, endon_notify) +set_time_frozen(time, endon_notify) { if ( isDefined( endon_notify ) ) { @@ -978,6 +969,8 @@ set_time_frozen(hud, time, endon_notify) level endon( "start_of_round" ); } + self endon( "death" ); + if(time != 0) { time -= 0.5; // need to set it below the number or it shows the next number @@ -987,17 +980,28 @@ set_time_frozen(hud, time, endon_notify) { if(time == 0) { - hud setTimerUp(time); + self setTimerUp(time); } else { - hud setTimer(time); + self setTimer(time); } wait 0.5; } } +set_time_frozen_on_end_game() +{ + level endon("intermission"); + + level waittill_any("end_game", "freeze_timers"); + + time = int((getTime() - self.start_time) / 1000); + + self set_time_frozen(time, "forever"); +} + zone_hud() { self endon("disconnect"); diff --git a/scripts/zm/replaced/_zm_sq.gsc b/scripts/zm/replaced/_zm_sq.gsc index 6a8c73ef..a27710b2 100644 --- a/scripts/zm/replaced/_zm_sq.gsc +++ b/scripts/zm/replaced/_zm_sq.gsc @@ -66,4 +66,42 @@ sq_give_player_all_perks() self maps\mp\zombies\_zm_perks::give_perk( perk, 0 ); wait 0.25; } +} + +sq_complete_time_hud() +{ + hud = newHudElem(); + hud.alignx = "center"; + hud.aligny = "top"; + hud.horzalign = "user_center"; + hud.vertalign = "user_top"; + hud.y += 100; + hud.fontscale = 1.4; + hud.alpha = 0; + hud.color = ( 1, 1, 1 ); + hud.hidewheninmenu = 1; + hud.foreground = 1; + hud.label = &"Quest Complete! Time: "; + + hud endon("death"); + + hud thread scripts\zm\_zm_reimagined::destroy_on_intermission(); + + fade_time = 0.5; + + hud fadeOverTime(fade_time); + hud.alpha = 1; + + time = int((getTime() - level.timer_hud_start_time) / 1000); + + hud thread scripts\zm\_zm_reimagined::set_time_frozen(time, "forever"); + + wait 10; + + hud fadeOverTime(fade_time); + hud.alpha = 0; + + wait fade_time; + + hud destroy(); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq.gsc b/scripts/zm/replaced/zm_buried_sq.gsc index 9882889e..1ed943f0 100644 --- a/scripts/zm/replaced/zm_buried_sq.gsc +++ b/scripts/zm/replaced/zm_buried_sq.gsc @@ -120,6 +120,8 @@ richtofen_zombie_deathfunction_override() sq_give_player_rewards() { + level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); + players = get_players(); foreach ( player in players ) diff --git a/scripts/zm/replaced/zm_highrise_sq.gsc b/scripts/zm/replaced/zm_highrise_sq.gsc index ab84f802..bbb52691 100644 --- a/scripts/zm/replaced/zm_highrise_sq.gsc +++ b/scripts/zm/replaced/zm_highrise_sq.gsc @@ -175,8 +175,9 @@ sq_give_all_perks() n_fireball_exploder = 901; } - players = getplayers(); + level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); + players = getplayers(); foreach ( player in players ) { player thread sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder ); diff --git a/scripts/zm/replaced/zm_prison_sq_final.gsc b/scripts/zm/replaced/zm_prison_sq_final.gsc index be962236..ea776e9e 100644 --- a/scripts/zm/replaced/zm_prison_sq_final.gsc +++ b/scripts/zm/replaced/zm_prison_sq_final.gsc @@ -77,7 +77,6 @@ stage_two() t_plane_fly_afterlife trigger_on(); players = get_players(); - foreach ( player in players ) { if ( is_player_valid( player ) ) @@ -304,6 +303,8 @@ stage_final() level thread clean_up_final_brutuses(); wait 2; + level notify("freeze_timers"); + if ( level.winner == "weasel" ) { a_players = getplayers(); diff --git a/scripts/zm/replaced/zm_transit_sq.gsc b/scripts/zm/replaced/zm_transit_sq.gsc index 0f9f5c54..0a617609 100644 --- a/scripts/zm/replaced/zm_transit_sq.gsc +++ b/scripts/zm/replaced/zm_transit_sq.gsc @@ -280,8 +280,9 @@ set_screecher_zone_origin_and_notify( script_noteworthy, notify_str ) droppowerup( story ) { - players = get_players(); + level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); + players = get_players(); foreach ( player in players ) { if ( is_player_valid( player ) )