mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
161 lines
3.5 KiB
Plaintext
161 lines
3.5 KiB
Plaintext
#include maps\_utility;
|
||
init()
|
||
{
|
||
level.splitscreen = isSplitScreen();
|
||
if ( level.onlineGame || level.systemLink )
|
||
{
|
||
precacheString( &"GAME_HOST_ENDED_GAME" );
|
||
}
|
||
else
|
||
{
|
||
precacheString( &"GAME_ENDED_GAME" );
|
||
}
|
||
if ( !isDefined( game["state"] ) )
|
||
{
|
||
game["state"] = "playing";
|
||
}
|
||
level.gameEnded = false;
|
||
level.postRoundTime = 4.0;
|
||
level.forcedEnd = false;
|
||
level.hostForcedEnd = false;
|
||
}
|
||
forceEnd()
|
||
{
|
||
if ( level.hostForcedEnd || level.forcedEnd )
|
||
{
|
||
return;
|
||
}
|
||
forcelevelend();
|
||
level.forcedEnd = true;
|
||
level.hostForcedEnd = true;
|
||
if ( level.onlineGame || level.systemLink )
|
||
{
|
||
endString = &"GAME_HOST_ENDED_GAME";
|
||
}
|
||
else
|
||
{
|
||
endString = "";
|
||
}
|
||
makeDvarServerInfo( "ui_text_endreason", endString );
|
||
setDvar( "ui_text_endreason", endString );
|
||
thread endGame( endString );
|
||
}
|
||
endGameMessage( endReasonText )
|
||
{
|
||
self endon ( "disconnect" );
|
||
if ( level.splitscreen && !IsDefined(level.zombietron_mode) )
|
||
{
|
||
titleSize = 2.0;
|
||
spacing = 10;
|
||
font = "default";
|
||
}
|
||
else
|
||
{
|
||
titleSize = 3.0;
|
||
spacing = 50;
|
||
font = "objective";
|
||
}
|
||
duration = 60000;
|
||
outcomeTitle = maps\_hud_util::createFontString( font, titleSize,self );
|
||
outcomeTitle maps\_hud_util::setPoint( "TOP", undefined, 0, spacing );
|
||
outcomeTitle setText( endReasonText );
|
||
outcomeTitle.glowAlpha = 1;
|
||
outcomeTitle.hideWhenInMenu = false;
|
||
outcomeTitle.archived = false;
|
||
outcomeTitle setPulseFX( 100, duration, 1000 );
|
||
if( IsDefined(level.zombietron_mode) )
|
||
{
|
||
players = get_players();
|
||
players[0] clearclientflag( level._ZT_PLAYER_CF_SHOW_SCORES );
|
||
}
|
||
}
|
||
endGame( endReasonText )
|
||
{
|
||
if ( game["state"] == "postgame" )
|
||
{
|
||
return;
|
||
}
|
||
visionSetNaked( "mpOutro", 2.0 );
|
||
game["state"] = "postgame";
|
||
level.gameEndTime = getTime();
|
||
level.gameEnded = true;
|
||
level.inGracePeriod = false;
|
||
level notify ( "game_ended" );
|
||
players = get_players();
|
||
for ( index = 0; index < players.size; index++ )
|
||
{
|
||
player = players[index];
|
||
player freezePlayerForRoundEnd();
|
||
player thread roundEndDoF( 4.0 );
|
||
player setClientDvar( "cg_everyoneHearsEveryone", "1" );
|
||
if( IsDefined(level.zombietron_mode) )
|
||
{
|
||
self.sessionstate = "intermission";
|
||
}
|
||
if( isDefined( endReasonText ) )
|
||
{
|
||
player endGameMessage( endReasonText );
|
||
}
|
||
}
|
||
level.intermission = true;
|
||
roundEndWait( level.postRoundTime, true );
|
||
players = get_players();
|
||
for ( index = 0; index < players.size; index++ )
|
||
{
|
||
player = players[index];
|
||
player closeMenu();
|
||
player closeInGameMenu();
|
||
}
|
||
logString( "game ended" );
|
||
exitLevel( false );
|
||
}
|
||
roundEndWait( defaultDelay, matchBonus )
|
||
{
|
||
notifiesDone = false;
|
||
while ( !notifiesDone )
|
||
{
|
||
players = get_players();
|
||
notifiesDone = true;
|
||
for ( index = 0; index < players.size; index++ )
|
||
{
|
||
if ( !isDefined( players[index].doingNotify ) || !players[index].doingNotify )
|
||
{
|
||
continue;
|
||
}
|
||
notifiesDone = false;
|
||
}
|
||
wait ( 0.5 );
|
||
}
|
||
if ( !matchBonus )
|
||
{
|
||
wait ( defaultDelay );
|
||
return;
|
||
}
|
||
wait ( defaultDelay );
|
||
notifiesDone = false;
|
||
while ( !notifiesDone )
|
||
{
|
||
players = get_players();
|
||
notifiesDone = true;
|
||
for ( index = 0; index < players.size; index++ )
|
||
{
|
||
if ( !isDefined( players[index].doingNotify ) || !players[index].doingNotify )
|
||
{
|
||
continue;
|
||
}
|
||
notifiesDone = false;
|
||
}
|
||
wait ( 0.5 );
|
||
}
|
||
}
|
||
freezePlayerForRoundEnd()
|
||
{
|
||
self closeMenu();
|
||
self closeInGameMenu();
|
||
self freezeControls( true );
|
||
}
|
||
roundEndDOF( time )
|
||
{
|
||
self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 );
|
||
}
|
||
|
||
|