1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-07-04 02:48:18 -05:00

Encounter: change spawn point on team change during pregame

Encounter: add ready up for team change option
This commit is contained in:
Jbleezy
2023-04-23 05:28:56 -07:00
parent 44dd3f6427
commit 9810561796
4 changed files with 123 additions and 19 deletions

View File

@ -129,7 +129,6 @@ menuautoassign( comingfrommenu )
self.ffateam = assignment; self.ffateam = assignment;
} }
self.joined_team = true;
self notify( "joined_team" ); self notify( "joined_team" );
level notify( "joined_team" ); level notify( "joined_team" );
self notify( "end_respawn" ); self notify( "end_respawn" );

View File

@ -565,7 +565,7 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
if ( isDedicated() && isDefined( level.pregame_minplayers ) ) if ( isDedicated() && isDefined( level.pregame_minplayers ) )
{ {
pregame_hud = createServerFontString( "objective", 1.5 ); pregame_hud = createServerFontString( "objective", 1.5 );
pregame_hud setPoint( "CENTER", "CENTER", 0, -40 ); pregame_hud setPoint( "CENTER", "CENTER", 0, -100 );
pregame_hud.foreground = 1; pregame_hud.foreground = 1;
pregame_hud.color = ( 1, 1, 1 ); pregame_hud.color = ( 1, 1, 1 );
pregame_hud.hidewheninmenu = true; pregame_hud.hidewheninmenu = true;
@ -573,6 +573,12 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
num_players = get_number_of_valid_players(); num_players = get_number_of_valid_players();
while ( num_players < level.pregame_minplayers ) while ( num_players < level.pregame_minplayers )
{ {
players = get_players();
for ( i = 0; i < players.size; i++ )
{
players[i] freezecontrols( 1 );
}
num_waiting_for = level.pregame_minplayers - num_players; num_waiting_for = level.pregame_minplayers - num_players;
if (level.intermission) if (level.intermission)
@ -593,12 +599,60 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
num_players = get_number_of_valid_players(); num_players = get_number_of_valid_players();
} }
if ( level.allow_teamchange )
{
ready_up_hud = createServerFontString( "objective", 1.5 );
ready_up_hud setPoint( "CENTER", "CENTER", 0, -120 );
ready_up_hud.foreground = 1;
ready_up_hud.color = ( 1, 1, 1 );
ready_up_hud.hidewheninmenu = true;
ready_up_hud setText("PRESS ^3[{+gostand}]^7 OR ^3[{+activate}]^7 TO READY UP");
num_ready = 0;
players = get_players();
while ( num_ready < players.size )
{
for ( i = 0; i < players.size; i++ )
{
players[i] freezecontrols( 1 );
if ( players[i] jumpbuttonpressed() || players[i] usebuttonpressed() )
{
players[i].ready = 1;
}
if ( is_true(players[i].ready) )
{
num_ready++;
players[i].statusicon = "menu_mp_killstreak_select";
}
else
{
players[i].statusicon = "menu_mp_contract_expired";
}
}
num_waiting_for = players.size - num_ready;
pregame_hud setText("WAITING FOR " + num_waiting_for + " PLAYERS TO BE READY [" + num_ready + "/" + players.size + "]");
wait 0.05;
num_ready = 0;
players = get_players();
}
ready_up_hud destroy();
}
pregame_hud destroy(); pregame_hud destroy();
} }
players = get_players(); players = get_players();
for ( i = 0; i < players.size; i++ ) for ( i = 0; i < players.size; i++ )
{ {
players[i].statusicon = "";
if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) ) if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) )
{ {
if ( isdefined( level.player_movement_suppressed ) ) if ( isdefined( level.player_movement_suppressed ) )
@ -1055,7 +1109,7 @@ getfreespawnpoint( spawnpoints, player )
if ( !isdefined( self.playernum ) ) if ( !isdefined( self.playernum ) )
{ {
num = 0; num = 0;
players = get_players(); players = get_players(self.team);
for(num = 0; num < 4; num++) for(num = 0; num < 4; num++)
{ {
@ -1063,7 +1117,7 @@ getfreespawnpoint( spawnpoints, player )
foreach(player in players) foreach(player in players)
{ {
if(is_true(player.joined_team) && player != self && player.team == self.team && player.playernum == num) if(player != self && isdefined(player.playernum) && player.playernum == num)
{ {
valid_num = false; valid_num = false;
break; break;

View File

@ -233,21 +233,7 @@ menu_onmenuresponse()
{ {
self closemenu(); self closemenu();
self closeingamemenu(); self closeingamemenu();
self thread do_team_change();
if ( !level.allow_teamchange )
{
teamplayers = countplayers( self.pers["team"] );
otherteamplayers = countplayers( getotherteam( self.pers["team"] ) );
if ( teamplayers - 1 <= otherteamplayers )
{
self iprintln( "Can only change teams if unbalanced." );
continue;
}
}
set_team( getotherteam( self.pers["team"] ) );
continue; continue;
} }
@ -386,6 +372,68 @@ menu_onmenuresponse()
} }
} }
do_team_change()
{
if ( !level.allow_teamchange )
{
teamplayers = countplayers( self.pers["team"] );
otherteamplayers = countplayers( getotherteam( self.pers["team"] ) );
if ( teamplayers - 1 <= otherteamplayers )
{
self iprintln( "Can only change teams if unbalanced." );
return;
}
}
self.playernum = undefined;
level notify( "team_change", self.pers["team"] );
num = 0;
valid_num = false;
other_team = getotherteam(self.pers["team"]);
players = get_players(other_team);
for(num = 0; num < 4; num++)
{
valid_num = true;
foreach(player in players)
{
if(isdefined(player.playernum) && player.playernum == num)
{
valid_num = false;
break;
}
}
if(valid_num)
{
break;
}
}
if (!valid_num)
{
self iprintln( "Waiting for other player to change teams." );
level waittill( "team_change", team );
if (team == self.pers["team"])
{
return;
}
}
set_team( getotherteam( self.pers["team"] ) );
if ( !flag( "initial_blackscreen_passed" ) )
{
self [[ level.spawnplayer ]]();
}
}
set_team(team) set_team(team)
{ {
if ( team == "axis" ) if ( team == "axis" )

View File

@ -54,6 +54,9 @@ init()
level.player_spawn_sound = "zmb_spawn_powerup"; level.player_spawn_sound = "zmb_spawn_powerup";
} }
precacheStatusIcon( "menu_mp_killstreak_select" );
precacheStatusIcon( "menu_mp_contract_expired" );
setDvar("ui_scorelimit", 1); setDvar("ui_scorelimit", 1);
setteamscore("axis", 0); setteamscore("axis", 0);