From 4a146dc93f9a8bf4bb10d0356082ff974cb48461 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Tue, 11 Apr 2023 19:35:03 -0700 Subject: [PATCH] Remove round cap --- README.md | 1 + scripts/zm/_zm_reimagined.gsc | 3 +- scripts/zm/replaced/_zm.gsc | 175 +++++++++++++++++++++++++++++++++- 3 files changed, 176 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cbaa98f6..c2e43b55 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ ## Change Notes ## General +* Removed round cap * Removed fog * Disabled depth of field * Increased level of detail at longer distances diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index e6e1935c..d3ceba45 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -32,7 +32,7 @@ main() replaceFunc(common_scripts\utility::struct_class_init, scripts\zm\replaced\utility::struct_class_init); replaceFunc(maps\mp\animscripts\zm_melee::meleecombat, scripts\zm\replaced\zm_melee::meleecombat); replaceFunc(maps\mp\animscripts\zm_utility::wait_network_frame, scripts\zm\replaced\_zm_utility::wait_network_frame); - replaceFunc(maps\mp\zombies\_zm::check_quickrevive_for_hotjoin, scripts\zm\replaced\_zm::check_quickrevive_for_hotjoin); + replaceFunc(maps\mp\zombies\_zm::round_start, scripts\zm\replaced\_zm::round_start); replaceFunc(maps\mp\zombies\_zm::ai_calculate_health, scripts\zm\replaced\_zm::ai_calculate_health); replaceFunc(maps\mp\zombies\_zm::onallplayersready, scripts\zm\replaced\_zm::onallplayersready); replaceFunc(maps\mp\zombies\_zm::last_stand_pistol_rank_init, scripts\zm\replaced\_zm::last_stand_pistol_rank_init); @@ -45,6 +45,7 @@ main() replaceFunc(maps\mp\zombies\_zm::player_revive_monitor, scripts\zm\replaced\_zm::player_revive_monitor); replaceFunc(maps\mp\zombies\_zm::player_out_of_playable_area_monitor, scripts\zm\replaced\_zm::player_out_of_playable_area_monitor); replaceFunc(maps\mp\zombies\_zm::end_game, scripts\zm\replaced\_zm::end_game); + replaceFunc(maps\mp\zombies\_zm::check_quickrevive_for_hotjoin, scripts\zm\replaced\_zm::check_quickrevive_for_hotjoin); replaceFunc(maps\mp\zombies\_zm_stats::set_global_stat, scripts\zm\replaced\_zm_stats::set_global_stat); replaceFunc(maps\mp\zombies\_zm_playerhealth::playerhealthregen, scripts\zm\replaced\_zm_playerhealth::playerhealthregen); replaceFunc(maps\mp\zombies\_zm_utility::track_players_intersection_tracker, scripts\zm\replaced\_zm_utility::track_players_intersection_tracker); diff --git a/scripts/zm/replaced/_zm.gsc b/scripts/zm/replaced/_zm.gsc index 3c2dd44f..40ee895a 100644 --- a/scripts/zm/replaced/_zm.gsc +++ b/scripts/zm/replaced/_zm.gsc @@ -4,9 +4,175 @@ #include maps\mp\gametypes_zm\_hud_util; #include maps\mp\zombies\_zm; -check_quickrevive_for_hotjoin(disconnecting_player) +round_start() { - // always use coop quick revive + if ( isdefined( level.round_prestart_func ) ) + [[ level.round_prestart_func ]](); + else + { + n_delay = 2; + + if ( isdefined( level.zombie_round_start_delay ) ) + n_delay = level.zombie_round_start_delay; + + wait( n_delay ); + } + + level.zombie_health = level.zombie_vars["zombie_health_start"]; + + if ( getdvarint( "scr_writeConfigStrings" ) == 1 ) + { + wait 5; + exitlevel(); + return; + } + + if ( level.zombie_vars["game_start_delay"] > 0 ) + round_pause( level.zombie_vars["game_start_delay"] ); + + flag_set( "begin_spawning" ); + + if ( !isdefined( level.round_spawn_func ) ) + level.round_spawn_func = ::round_spawning; + + if ( !isdefined( level.round_wait_func ) ) + level.round_wait_func = ::round_wait; + + if ( !isdefined( level.round_think_func ) ) + level.round_think_func = ::round_think; + + level thread [[ level.round_think_func ]](); +} + +round_think( restart = 0 ) +{ + level endon( "end_round_think" ); + + if ( !( isdefined( restart ) && restart ) ) + { + if ( isdefined( level.initial_round_wait_func ) ) + [[ level.initial_round_wait_func ]](); + + if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) ) + { + players = get_players(); + + foreach ( player in players ) + { + if ( !( isdefined( player.hostmigrationcontrolsfrozen ) && player.hostmigrationcontrolsfrozen ) ) + { + player freezecontrols( 0 ); + } + + player maps\mp\zombies\_zm_stats::set_global_stat( "rounds", level.round_number ); + } + } + } + + setroundsplayed( level.round_number ); + + for (;;) + { + maxreward = 50 * level.round_number; + + if ( maxreward > 500 ) + maxreward = 500; + + level.zombie_vars["rebuild_barrier_cap_per_round"] = maxreward; + level.pro_tips_start_time = gettime(); + level.zombie_last_run_time = gettime(); + + if ( isdefined( level.zombie_round_change_custom ) ) + [[ level.zombie_round_change_custom ]](); + else + { + level thread maps\mp\zombies\_zm_audio::change_zombie_music( "round_start" ); + round_one_up(); + } + + maps\mp\zombies\_zm_powerups::powerup_round_start(); + players = get_players(); + array_thread( players, maps\mp\zombies\_zm_blockers::rebuild_barrier_reward_reset ); + + if ( !( isdefined( level.headshots_only ) && level.headshots_only ) && !restart ) + level thread award_grenades_for_survivors(); + + bbprint( "zombie_rounds", "round %d player_count %d", level.round_number, players.size ); + + level.round_start_time = gettime(); + + while ( level.zombie_spawn_locations.size <= 0 ) + wait 0.1; + + level thread [[ level.round_spawn_func ]](); + level notify( "start_of_round" ); + recordzombieroundstart(); + players = getplayers(); + + for ( index = 0; index < players.size; index++ ) + { + zonename = players[index] get_current_zone(); + + if ( isdefined( zonename ) ) + players[index] recordzombiezone( "startingZone", zonename ); + } + + if ( isdefined( level.round_start_custom_func ) ) + [[ level.round_start_custom_func ]](); + + [[ level.round_wait_func ]](); + level.first_round = 0; + level notify( "end_of_round" ); + level thread maps\mp\zombies\_zm_audio::change_zombie_music( "round_end" ); + uploadstats(); + + if ( isdefined( level.round_end_custom_logic ) ) + [[ level.round_end_custom_logic ]](); + + players = get_players(); + + if ( isdefined( level.no_end_game_check ) && level.no_end_game_check ) + { + level thread last_stand_revive(); + level thread spectators_respawn(); + } + else if ( 1 != players.size ) + level thread spectators_respawn(); + + players = get_players(); + array_thread( players, maps\mp\zombies\_zm_pers_upgrades_system::round_end ); + timer = level.zombie_vars["zombie_spawn_delay"]; + + if ( timer > 0.08 ) + level.zombie_vars["zombie_spawn_delay"] = timer * 0.95; + else if ( timer < 0.08 ) + level.zombie_vars["zombie_spawn_delay"] = 0.08; + + if ( level.gamedifficulty == 0 ) + level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier_easy"]; + else + level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier"]; + + level.round_number++; + + setroundsplayed( level.round_number + int(level.round_number / 256) ); + matchutctime = getutc(); + players = get_players(); + + foreach ( player in players ) + { + if ( level.curr_gametype_affects_rank && level.round_number > 3 + level.start_round ) + player maps\mp\zombies\_zm_stats::add_client_stat( "weighted_rounds_played", level.round_number ); + + player maps\mp\zombies\_zm_stats::set_global_stat( "rounds", level.round_number ); + player maps\mp\zombies\_zm_stats::update_playing_utc_time( matchutctime ); + } + + check_quickrevive_for_hotjoin(); + level round_over(); + level notify( "between_round_over" ); + restart = 0; + } } ai_calculate_health( round_number ) @@ -1625,4 +1791,9 @@ end_game() } wait 666; +} + +check_quickrevive_for_hotjoin(disconnecting_player) +{ + // always use coop quick revive } \ No newline at end of file