diff --git a/scripts/zm/replaced/_zm_gametype.gsc b/scripts/zm/replaced/_zm_gametype.gsc index 03281e99..ebaaa5a6 100644 --- a/scripts/zm/replaced/_zm_gametype.gsc +++ b/scripts/zm/replaced/_zm_gametype.gsc @@ -103,4 +103,33 @@ onspawnplayer( predictedspawn ) } pixendevent(); +} + +hide_gump_loading_for_hotjoiners() +{ + if(isDefined(level.scr_zm_ui_gametype_obj) && level.scr_zm_ui_gametype_obj != "zgrief") + { + return; + } + + self endon( "disconnect" ); + self.rebuild_barrier_reward = 1; + self.is_hotjoining = 1; + num = self getsnapshotackindex(); + while ( num == self getsnapshotackindex() ) + { + wait 0.25; + } + wait 0.5; + self maps/mp/zombies/_zm::spawnspectator(); + self.is_hotjoining = 0; + self.is_hotjoin = 1; + if ( is_true( level.intermission ) || is_true( level.host_ended_game ) ) + { + setclientsysstate( "levelNotify", "zi", self ); + self setclientthirdperson( 0 ); + self resetfov(); + self.health = 100; + self thread [[ level.custom_intermission ]](); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zgrief.gsc b/scripts/zm/replaced/zgrief.gsc index 35aeba9e..02fd9ce0 100644 --- a/scripts/zm/replaced/zgrief.gsc +++ b/scripts/zm/replaced/zgrief.gsc @@ -2,6 +2,22 @@ #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; +game_mode_spawn_player_logic() +{ + if(isDefined(level.scr_zm_ui_gametype_obj) && level.scr_zm_ui_gametype_obj != "zgrief") + { + return 0; + } + + if ( flag( "start_zombie_round_logic" ) && !isDefined( self.is_hotjoin ) ) + { + self.is_hotjoin = 1; + return 1; + } + + return 0; +} + meat_stink_on_ground(position_to_play) { level.meat_on_ground = 1; diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 549f3626..aed0baca 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -21,6 +21,7 @@ main() replaceFunc(maps/mp/zombies/_zm::getfreespawnpoint, scripts/zm/replaced/_zm::getfreespawnpoint); replaceFunc(maps/mp/gametypes_zm/_zm_gametype::onspawnplayer, scripts/zm/replaced/_zm_gametype::onspawnplayer); + replaceFunc(maps/mp/gametypes_zm/_zm_gametype::hide_gump_loading_for_hotjoiners, scripts/zm/replaced/_zm_gametype::hide_gump_loading_for_hotjoiners); replaceFunc(maps/mp/zombies/_zm_audio_announcer::playleaderdialogonplayer, scripts/zm/replaced/_zm_audio_announcer::playleaderdialogonplayer); replaceFunc(maps/mp/zombies/_zm_game_module::wait_for_team_death_and_round_end, scripts/zm/replaced/_zm_game_module::wait_for_team_death_and_round_end); replaceFunc(maps/mp/zombies/_zm_blockers::handle_post_board_repair_rewards, scripts/zm/replaced/_zm_blockers::handle_post_board_repair_rewards); @@ -289,6 +290,7 @@ set_grief_vars() level._game_module_player_damage_callback = ::game_module_player_damage_callback; level._game_module_player_laststand_callback = ::grief_laststand_weapon_save; level.onplayerspawned_restore_previous_weapons = ::grief_laststand_weapons_return; + level.game_mode_spawn_player_logic = scripts/zm/replaced/zgrief::game_mode_spawn_player_logic; if(isDefined(level.zombie_weapons["knife_ballistic_zm"])) {