iw6-scripts/maps/_introscreen.gsc
2024-02-13 13:20:49 +01:00

1152 lines
28 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
precacheshader( "black" );
var_0 = 0;
level thread game_messages();
common_scripts\utility::flag_wait( "start_is_set" );
if ( !isdefined( level.introscreen ) || !maps\_utility::is_default_start() || var_0 )
maps\_utility::delaythread( 0.05, common_scripts\utility::flag_set, "introscreen_complete" );
else
{
if ( isdefined( level.introscreen.customfunc ) )
{
[[ level.introscreen.customfunc ]]();
return;
}
introscreen();
}
}
introscreen_feed_lines()
{
if ( !isdefined( level.introscreen ) )
return 0;
var_0 = level.introscreen.lines;
var_1 = getarraykeys( var_0 );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
var_3 = var_1[var_2];
var_4 = 1;
var_5 = var_2 * var_4 + 1;
maps\_utility::delaythread( var_5, ::introscreen_corner_line, var_0[var_3], var_0.size - var_2 - 1, var_4, var_3 );
}
return 1;
}
introscreen_generic_black_fade_in( var_0, var_1, var_2 )
{
introscreen_generic_fade_in( "black", var_0, var_1, var_2 );
}
introscreen_generic_fade_in( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_2 ) )
var_2 = 1.5;
if ( !isdefined( var_3 ) )
maps\_hud_util::start_overlay();
else
maps\_hud_util::fade_out( var_3 );
wait( var_1 );
maps\_hud_util::fade_in( var_2 );
wait( var_2 );
setsaveddvar( "com_cinematicEndInWhite", 0 );
}
introscreen_corner_line( var_0, var_1, var_2, var_3 )
{
level notify( "new_introscreen_element" );
if ( !isdefined( level.intro_offset ) )
level.intro_offset = 0;
else
level.intro_offset++;
var_4 = cornerline_height();
var_5 = newhudelem();
var_5.x = 20;
var_5.y = var_4;
var_5.alignx = "left";
var_5.aligny = "bottom";
var_5.horzalign = "left";
var_5.vertalign = "bottom";
var_5.sort = 1;
var_5.foreground = 1;
var_5 settext( var_0 );
var_5.alpha = 0;
var_5 fadeovertime( 0.2 );
var_5.alpha = 1;
var_5.hidewheninmenu = 1;
var_5.fontscale = 2.0;
var_5.color = ( 0.8, 1, 0.8 );
var_5.font = "default";
var_5.glowcolor = ( 0.3, 0.6, 0.3 );
var_5.glowalpha = 1;
var_6 = int( var_1 * var_2 * 1000 + 4000 );
var_5 setpulsefx( 30, var_6, 700 );
thread hudelem_destroy( var_5 );
}
cornerline_height()
{
return level.intro_offset * 20 - 82;
}
hudelem_destroy( var_0 )
{
wait 16;
var_0 notify( "destroying" );
level.intro_offse = undefined;
var_1 = 0.5;
var_0 fadeovertime( var_1 );
var_0.alpha = 0;
wait( var_1 );
var_0 notify( "destroy" );
var_0 destroy();
}
old_introscreen_default()
{
level.player freezecontrols( 1 );
thread introscreen_generic_black_fade_in( level.introscreen.completed_delay, level.introscreen.fade_out_time, level.introscreen.fade_in_time );
if ( !introscreen_feed_lines() )
wait 0.05;
wait( level.introscreen.completed_delay );
common_scripts\utility::flag_set( "introscreen_complete" );
level.player freezecontrols( 0 );
}
introscreen( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
{
var_0 = 0;
var_2 = 1;
}
if ( isdefined( var_1 ) )
{
var_0 = 1;
maps\_hud_util::start_overlay();
level.player freezecontrols( 1 );
level.player common_scripts\utility::delaycall( var_1, ::freezecontrols, 0 );
maps\_utility::delaythread( var_1, maps\_hud_util::fade_in, 2 );
}
level.chyron = spawnstruct();
level.chyron.huds = [];
level.chyron.strips = [];
level.chyron.last_strips = [];
level.chyron.artifacts = [];
level.chyron.text_x = 20;
level.chyron.text_y = -82;
level.chyron.text_incoming = 0;
level.chyron.strips_disabled = 0;
level.chyron.sound_org = spawn( "script_origin", level.player.origin );
level.chyron.sound_org linkto( level.player );
level.chyron.no_bg = var_0;
if ( !var_0 )
{
level.player freezecontrols( 1 );
maps\_hud_util::start_overlay();
thread artifacts( 0 );
}
chyron_sound( 0, "ui_chyron_on" );
thread strips( 0 );
var_3 = 0.4;
thread quick_cursor( 0, var_3 );
wait( var_3 );
title_line( level.introscreen.lines[0] );
chyron_sound( 0, "ui_chyron_firstline" );
sub_line( level.introscreen.lines[1], 0 );
wait 2;
var_4 = sub_line( level.introscreen.lines[2], 1, "default", 1, 1 );
var_4.color = ( 0.68, 0.744, 0.736 );
var_5 = undefined;
if ( isdefined( level.introscreen.lines[3] ) )
{
var_5 = sub_line( level.introscreen.lines[3], 2, "default", 1, 1 );
var_5.color = ( 0.68, 0.744, 0.736 );
level.chyron.huds = common_scripts\utility::array_remove( level.chyron.huds, var_5 );
}
wait 1;
level.chyron.strips_disabled = 1;
wait 2;
level.chyron.strips_disabled = 0;
if ( isdefined( var_5 ) )
var_5 thread name_drift();
wait 1;
faze_out( 0, var_0 );
if ( !var_0 )
{
chyron_sound( 0, "ui_chyron_off" );
thread maps\_hud_util::fade_in( 2 );
level.player freezecontrols( 0 );
}
common_scripts\utility::flag_set( "introscreen_complete" );
level notify( "stop_chyron" );
level.chyron.sound_org delete();
level.chyron = undefined;
}
name_drift()
{
var_0 = self.color;
var_1 = self.alpha;
self notify( "stop_quick_pulse" );
var_2 = 2;
self.glowalpha = 1;
self.glowcolor = ( 1, 1, 1 );
thread fade_glow( ( 0.10625, 0.11625, 0.115 ), 0.1, var_2 );
self.color = ( 1, 1, 1 );
self.alpha = 1;
self fadeovertime( var_2 );
self.color = var_0;
self.alpha = 0.8;
var_2 = 4;
self moveovertime( var_2 * 3 );
self changefontscaleovertime( var_2 * 1.5 );
self.x = self.x + randomintrange( 5, 10 );
self.y = self.y - randomintrange( 3, 12 );
self.fontscale = self.fontscale * randomfloatrange( 1.2, 1.3 );
wait( var_2 );
self fadeovertime( 2 );
self.alpha = 0;
wait 2;
self destroy();
}
fade_glow( var_0, var_1, var_2 )
{
self endon( "death" );
var_3 = var_2 * 20;
var_4 = ( var_0 - self.glowcolor ) / var_3;
var_5 = ( var_1 - self.glowalpha ) / var_3;
for ( var_6 = 0; var_6 < var_3; var_6++ )
{
self.glowcolor = self.glowcolor + var_4;
self.glowalpha = self.glowalpha + var_5;
wait 0.05;
}
self.glowcolor = var_0;
self.glowalpha = var_1;
}
chyron_sound( var_0, var_1 )
{
if ( var_0 == 0 )
level.chyron.sound_org playsound( var_1 );
else
level.game_messages.sound_org playsound( var_1 );
}
hud_destroy( var_0 )
{
self endon( "death" );
self fadeovertime( var_0 );
self.alpha = 0;
wait( var_0 );
self destroy();
}
quick_cursor( var_0, var_1 )
{
wait 0.5;
var_2 = newhudelem();
if ( var_0 == 0 )
{
var_2.x = level.chyron.text_x - 5;
var_2.y = level.chyron.text_y;
var_2.vertalign = "bottom";
}
else
{
var_2.x = level.game_messages.text_x - 5;
var_2.y = level.game_messages.text_y;
var_2.vertalign = "top";
}
var_2.fontscale = 3;
var_2.horzalign = "left";
var_2.sort = 1;
var_2.foreground = 1;
var_2.hidewheninmenu = 1;
var_2.alpha = 0.8;
var_2 setshader( "white", 1, 35 );
var_2.color = ( 0.85, 0.93, 0.92 );
var_2 moveovertime( var_1 );
var_2 fadeovertime( var_1 * 0.5 );
var_2.alpha = 0;
var_2.x = var_2.x + 300;
wait 0.4;
var_2 destroy();
}
artifacts( var_0 )
{
if ( var_0 == 0 )
level endon( "chyron_faze_out_text_intro" );
else
level endon( "chyron_faze_out_text_gamenotify" );
var_1 = [ ".", "-", "_", "|", "+" ];
var_2 = 0.7;
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
{
var_4 = create_chyron_text( "" );
var_4.fontscale = var_2;
var_4.alpha = 0;
var_4.sort = 2;
var_4.color = ( 0.75, 0.83, 0.89 );
var_4.pulse = 0;
level.chyron.artifacts[level.chyron.artifacts.size] = var_4;
}
level.chyron.artifacts_fade = 0;
thread artifact_pulse( var_0 );
var_5 = 0;
var_6 = level.chyron.text_y - 10;
for (;;)
{
var_7 = 0;
var_1 = common_scripts\utility::array_randomize( var_1 );
foreach ( var_4 in level.chyron.artifacts )
{
chyron_sound( var_0, "ui_chyron_plusminus" );
var_4.fontscale = var_2;
if ( var_1[var_7] == "+" )
var_4.fontscale = 0.55;
var_4 settext( var_1[var_7] );
var_4.x = var_5 + randomint( 200 );
var_4.y = var_6 + randomint( 60 );
var_4.pulse = 1;
var_7++;
wait( randomfloatrange( 0.05, 0.1 ) );
}
wait( randomfloatrange( 4, 7 ) );
level.chyron.artifacts_fade = 1;
level waittill( "chyron_artifact_faded" );
}
}
artifact_pulse( var_0 )
{
if ( var_0 == 0 )
level endon( "chyron_faze_out_text_intro" );
else
level endon( "chyron_faze_out_text_gamenotify" );
var_1 = 0.6;
var_2 = 1;
for (;;)
{
if ( level.chyron.artifacts_fade )
var_1 = var_1 - 0.07;
else
{
if ( var_1 < 0.15 || var_1 > 0.6 )
var_2 = var_2 * -1;
var_1 = var_1 + ( 0.02 + randomfloat( 0.04 ) ) * var_2;
}
var_1 = max( var_1, 0 );
foreach ( var_4 in level.chyron.artifacts )
{
if ( var_4.pulse )
{
if ( var_1 == 0 )
{
var_4.alpha = 0;
continue;
}
var_4.alpha = randomfloatrange( var_1 * 0.6, var_1 );
}
}
if ( var_1 == 0 )
{
level notify( "chyron_artifact_faded" );
var_1 = 0.8;
level.chyron.artifacts_fade = 0;
foreach ( var_4 in level.chyron.artifacts )
var_4.pulse = 0;
}
wait 0.05;
}
}
strips( var_0 )
{
if ( var_0 == 0 )
level endon( "chyron_faze_out_text_intro" );
else
level endon( "chyron_faze_out_text_gamenotify" );
var_1 = 5;
var_2 = 0;
var_3 = 1;
for (;;)
{
if ( var_0 == 0 && level.chyron.strips_disabled || var_0 == 1 && level.game_messages.strips_disabled )
{
wait 0.05;
continue;
}
var_2++;
var_4 = int( min( var_2, var_1 ) );
for ( var_5 = 0; var_5 < var_4; var_5++ )
{
thread create_strip( var_0 );
wait( randomfloatrange( 0, 0.1 ) );
}
if ( var_0 == 0 && level.chyron.text_incoming || var_0 == 1 && level.game_messages.text_incoming )
{
wait 0.05;
continue;
}
wait( randomfloatrange( var_3 * 0.5, var_3 ) );
var_3 = var_3 - 0.05;
var_3 = max( var_3, 0.2 );
}
}
title_line( var_0, var_1 )
{
var_2 = create_chyron_text( var_0 );
level.chyron.text_incoming_x = var_2.x;
level.chyron.text_incoming_y = var_2.y;
level.chyron.text_incoming = 1;
wait 0.5;
level.chyron.text_incoming = 0;
var_3 = dupe_hud( var_2, 1 );
var_4 = 4;
var_3[0] thread location_dupes_thread( var_4 );
var_2.y = var_2.y - 10;
var_2.glowalpha = 0.05;
var_2.glowcolor = ( 0.425, 0.465, 0.46 ) * glowcolor_mult();
var_5 = 0.3;
var_2 moveovertime( var_5 );
var_2 fadeovertime( var_5 * 3 );
var_2.y = var_2.y + 10;
var_6 = 0.5;
var_6 = var_6 - var_5;
wait( var_5 );
var_2 thread quick_pulse( 0 );
wait( var_6 );
if ( randomint( 100 ) > 10 )
var_2 thread offset_thread( -30, 30, 20, -8, 8, 4 );
}
offset_thread( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = randomintrange( 1, 2 );
for ( var_7 = 0; var_7 < var_6; var_7++ )
{
var_8 = randomintrange_limit( var_0, var_1, var_2 );
var_9 = randomintrange_limit( var_3, var_4, var_5 );
var_10[0] = [ var_8, var_9 ];
var_10[1] = [ var_8 - 10, var_9 ];
thread hud_offset( var_10 );
wait( randomfloatrange( 0.5, 1 ) );
}
}
faze_out( var_0, var_1 )
{
var_2 = undefined;
if ( !var_1 )
{
var_2 = newhudelem();
if ( var_0 == 0 )
{
var_2.x = level.chyron.text_x + 60;
var_2.y = level.chyron.text_y + 30;
var_2.vertalign = "bottom";
}
else
{
var_2.x = level.game_messages.text_x + 60;
var_2.y = level.game_messages.text_y + 10;
var_2.vertalign = "top";
}
var_2.alignx = "center";
var_2.aligny = "middle";
var_2.horzalign = "left";
var_2.sort = 1;
var_2.foreground = 1;
var_2.hidewheninmenu = 1;
var_2.alpha = 0;
var_2 setshader( "white", 1, 60 );
var_2.color = ( 0.85, 0.93, 0.92 );
var_2 fadeovertime( 0.25 );
var_2.alpha = 0.1;
var_2 scaleovertime( 0.1, 2000, 60 );
wait 0.1;
}
var_3 = 0.15;
fade_out_text( var_0, var_3 * 0.4 );
if ( !var_1 )
{
var_2 fadeovertime( 0.25 );
var_2.alpha = 0.2;
var_2.color = ( 1, 1, 1 );
var_2 scaleovertime( var_3, 2000, 2 );
wait( var_3 );
var_3 = 0.15;
var_2 scaleovertime( var_3, 2, 2 );
var_2 thread faze_out_finish( var_3 );
}
}
faze_out_finish( var_0 )
{
self fadeovertime( var_0 );
self.alpha = 0;
wait( var_0 );
self destroy();
}
fade_out_text( var_0, var_1 )
{
if ( var_0 == 0 )
{
level notify( "chyron_faze_out_text_intro" );
foreach ( var_3 in level.chyron.huds )
{
if ( !isdefined( var_3 ) )
continue;
var_3 thread hud_destroy( var_1 );
}
foreach ( var_3 in level.chyron.strips )
var_3 thread hud_destroy( var_1 );
}
else
{
level notify( "chyron_faze_out_text_gamenotify" );
foreach ( var_3 in level.game_messages.huds )
{
if ( !isdefined( var_3 ) )
continue;
var_3 thread hud_destroy( var_1 );
}
foreach ( var_3 in level.game_messages.strips )
var_3 thread hud_destroy( var_1 );
}
}
sub_line( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = create_chyron_text( var_0 );
var_5.y = var_5.y + ( 20 + var_1 * 15 );
if ( isdefined( var_2 ) )
var_5.font = var_2;
var_5.fontscale = 1;
if ( isdefined( var_3 ) )
var_5.fontscale = var_3;
level.chyron.text_incoming_x = var_5.x;
level.chyron.text_incoming_y = var_5.y;
level.chyron.text_incoming = 1;
wait 0.5;
var_5.glowalpha = 0.05;
var_5.glowcolor = ( 0.425, 0.465, 0.46 ) * glowcolor_mult();
var_5 thread quick_pulse( 0, var_4 );
var_5.alpha = 1;
if ( isdefined( var_4 ) )
var_5.alpha = var_4;
var_5 setpulsefx( 30, 50000, 700 );
if ( randomint( 100 ) > 70 )
var_5 maps\_utility::delaythread( 2, ::offset_thread, -7, 7, 3, -5, 5, 3 );
level.chyron.text_incoming = 0;
return var_5;
}
glowcolor_mult()
{
var_0 = 1;
if ( isdefined( level.chyron ) && level.chyron.no_bg )
var_0 = 0.3;
return var_0;
}
hud_offset( var_0 )
{
var_1 = self.x;
var_2 = self.y;
foreach ( var_4 in var_0 )
{
self.x = var_1 + var_4[0];
self.y = var_2 + var_4[1];
wait( randomfloatrange( 0.05, 0.2 ) );
}
self.x = var_1;
self.y = var_2;
}
quick_pulse( var_0, var_1 )
{
self endon( "death" );
self endon( "stop_quick_pulse" );
if ( var_0 == 0 )
level endon( "chyron_faze_out_text_intro" );
else
level endon( "chyron_faze_out_text_gamenotify" );
if ( !isdefined( var_1 ) )
var_1 = 1;
for (;;)
{
wait 0.05;
self.alpha = randomfloatrange( var_1 * 0.7, var_1 );
}
}
location_dupes_thread( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = 0;
self endon( "death" );
var_2 = self.x;
var_3 = self.y;
var_4 = 0.15;
if ( !var_1 )
{
self.x = self.x + randomintrange( -30, -10 );
self.y = self.y + randomintrange( 10, 20 );
self moveovertime( var_4 );
self.x = var_2;
self.y = var_3;
self fadeovertime( var_4 );
self.alpha = 0.1;
wait( var_4 );
}
self moveovertime( var_0 );
self.x = self.x + randomintrange( 15, 20 );
self.y = self.y + randomintrange( -4, 4 );
wait( var_0 );
var_4 = 0.05;
self moveovertime( var_4 );
self.x = var_2;
self.y = var_3;
wait( var_4 );
self fadeovertime( var_4 );
self.alpha = 0;
}
randomintrange_limit( var_0, var_1, var_2 )
{
var_3 = randomintrange( var_0, var_1 );
var_4 = 1;
if ( var_3 < 0 )
var_4 = -1;
var_3 = max( abs( var_3 ), var_2 );
return var_3 * var_4;
}
create_chyron_text( var_0, var_1, var_2 )
{
if ( !isdefined( var_1 ) )
var_1 = level.chyron.text_x;
if ( !isdefined( var_2 ) )
var_2 = level.chyron.text_y;
var_3 = newhudelem();
var_3.x = var_1;
var_3.y = var_2;
var_3.horzalign = "left";
var_3.vertalign = "bottom";
var_3.aligny = "bottom";
var_3.sort = 3;
var_3.foreground = 1;
var_3 settext( var_0 );
var_3.text = var_0;
var_3.alpha = 0;
var_3.hidewheninmenu = 1;
var_3.fontscale = 1.4;
if ( level.console )
var_3.fontscale = 1.2;
var_3.color = ( 0.85, 0.93, 0.92 );
var_3.font = "default";
if ( isdefined( level.chyron ) )
level.chyron.huds[level.chyron.huds.size] = var_3;
return var_3;
}
get_strip_settings( var_0 )
{
var_1 = spawnstruct();
var_2 = 0;
var_3 = 0;
var_4 = 0;
if ( var_0 == 0 )
{
var_5 = -85;
var_2 = level.chyron.text_incoming;
var_3 = level.chyron.text_incoming_x;
var_4 = level.chyron.text_incoming_y;
}
else
{
var_5 = 0;
var_2 = level.game_messages.text_incoming;
var_3 = level.game_messages.text_incoming_x;
var_4 = level.game_messages.text_incoming_y;
}
var_6 = 200;
var_7 = 60;
var_1.width = randomintrange( 20, var_6 );
var_8 = [ 5, 10, 15 ];
var_1.height = var_8[randomint( var_8.size )];
var_1.x = randomintrange( 0, var_6 - var_1.width );
var_1.y = var_5 + randomint( var_7 - var_1.height );
var_1.alpha = randomfloatrange( 0.3, 0.7 );
var_1.color = get_strip_color();
var_1.time = randomfloatrange( 0.05, 0.1 );
if ( var_2 )
{
var_1.x = int( var_3 + randomintrange( -1, 1 ) );
var_1.y = int( var_4 + randomintrange( 0, 7 ) );
var_1.width = randomintrange( 100, var_6 );
var_1.height = randomintrange( 10, 15 );
var_1.color = ( 0.85, 0.93, 0.92 ) * randomfloatrange( 0.2, 0.4 );
}
return var_1;
}
get_strip_color()
{
var_0 = [];
var_0[var_0.size] = ( 0.15, 0.14, 0.22 );
var_0[var_0.size] = ( 0.09, 0.11, 0.13 );
var_0[var_0.size] = ( 0.34, 0.22, 0.22 );
var_0[var_0.size] = ( 0.29, 0.34, 0.22 );
return var_0[randomint( var_0.size )];
}
create_strip( var_0 )
{
if ( var_0 == 0 )
{
level endon( "chyron_faze_out_text_intro" );
if ( level.chyron.strips.size < 8 )
{
var_1 = newhudelem();
var_1.visible = 0;
level.chyron.strips[level.chyron.strips.size] = var_1;
}
var_2 = undefined;
foreach ( var_4 in level.chyron.strips )
{
if ( var_4.visible )
continue;
var_2 = var_4;
}
if ( !isdefined( var_2 ) )
return;
var_6 = get_strip_settings( var_0 );
if ( !level.chyron.text_incoming )
{
if ( level.chyron.last_strips.size > 0 && level.chyron.last_strips.size < 3 && randomint( 100 ) > 10 )
{
var_7 = level.chyron.last_strips[level.chyron.last_strips.size - 1];
var_6.x = var_7.x;
var_6.y = var_7.y + var_7.height;
if ( common_scripts\utility::cointoss() )
var_6.y = var_7.y - var_6.height;
}
else
level.chyron.last_strips = [];
level.chyron.last_strips[level.chyron.last_strips.size] = var_2;
}
}
else
{
level endon( "chyron_faze_out_text_gamenotify" );
if ( level.game_messages.strips.size < 8 )
{
var_1 = newhudelem();
var_1.visible = 0;
level.game_messages.strips[level.game_messages.strips.size] = var_1;
}
var_2 = undefined;
foreach ( var_4 in level.game_messages.strips )
{
if ( var_4.visible )
continue;
var_2 = var_4;
}
if ( !isdefined( var_2 ) )
return;
var_6 = get_strip_settings( var_0 );
if ( !level.game_messages.text_incoming )
{
if ( level.game_messages.last_strips.size > 0 && level.game_messages.last_strips.size < 3 && randomint( 100 ) > 10 )
{
var_7 = level.game_messages.last_strips[level.game_messages.last_strips.size - 1];
var_6.x = var_7.x;
var_6.y = var_7.y + var_7.height;
if ( common_scripts\utility::cointoss() )
var_6.y = var_7.y - var_6.height;
}
else
level.game_messages.last_strips = [];
level.game_messages.last_strips[level.game_messages.last_strips.size] = var_2;
}
}
var_2.x = var_6.x;
var_2.y = var_6.y;
var_2.width = var_6.width;
var_2.height = var_6.height;
var_2 setshader( "white", var_6.width, var_6.height );
var_2.alpha = var_6.alpha;
var_2.color = var_6.color;
if ( var_2.alpha > 0.6 )
chyron_sound( var_0, "ui_chyron_line_static" );
var_2.horzalign = "left";
var_2.vertalign = "bottom";
if ( var_0 == 1 )
var_2.vertalign = "top";
var_2.sort = 1;
var_2.foreground = 1;
var_2.hidewheninmenu = 1;
var_2.visible = 1;
wait( var_6.time );
var_2.alpha = 0;
var_2.visible = 0;
}
dupe_hud( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_1; var_3++ )
var_2[var_2.size] = create_chyron_text( var_0.text );
return var_2;
}
game_messages()
{
level.game_messages = spawnstruct();
level.game_messages.active = 0;
level.game_messages.text_list = [];
level thread game_message_listen( "chyron_message1" );
level thread game_message_listen( "chyron_message2" );
level thread game_message_listen( "chyron_message3" );
}
game_message_listen( var_0 )
{
for (;;)
{
level waittill( var_0, var_1, var_2 );
game_message_append( var_1 );
}
}
game_message_append( var_0 )
{
level.game_messages.text_list[level.game_messages.text_list.size] = var_0;
if ( !level.game_messages.active )
level thread game_messages_process();
}
game_messages_startup()
{
level.game_messages.active = 1;
level.game_messages.text_incoming = 0;
level.game_messages.strips_disabled = 0;
level.game_messages.text_x = 6;
level.game_messages.text_y = 10;
level.game_messages.huds = [];
level.game_messages.strips = [];
level.game_messages.last_strips = [];
level.game_messages.artifacts = [];
level.game_messages.sound_org = spawn( "script_origin", level.player.origin );
level.game_messages.sound_org linkto( level.player );
}
game_messages_shutdown()
{
level.game_messages.sound_org delete();
level.game_messages = spawnstruct();
level.game_messages.active = 0;
level.game_messages.text_list = [];
}
game_messages_process()
{
game_messages_startup();
chyron_sound( 1, "ui_chyron_on" );
thread strips( 1 );
var_0 = 0.4;
thread quick_cursor( 1, var_0 );
wait( var_0 );
for ( var_1 = 0; level.game_messages.text_list.size; level.game_messages.text_list = maps\_utility::array_remove_index( level.game_messages.text_list, 0 ) )
{
level thread game_message_display( level.game_messages.text_list[0], var_1 );
var_1++;
wait 0.5;
}
level.game_messages.text_incoming = 0;
wait 1;
level.game_messages.strips_disabled = 1;
wait 2;
level.game_messages.strips_disabled = 0;
wait 1;
chyron_sound( 1, "ui_chyron_off" );
faze_out( 1, 0 );
if ( level.game_messages.text_list.size )
{
level.game_messages.sound_org delete();
thread game_messages_process();
return;
}
game_messages_shutdown();
}
game_message_display( var_0, var_1 )
{
var_2 = create_gamemessage_text( var_0, var_1 );
level.game_messages.text_incoming_x = var_2.x;
level.game_messages.text_incoming_y = var_2.y;
level.game_messages.text_incoming = 1;
var_2 thread quick_pulse( 1 );
var_2.alpha = 1;
var_2 setpulsefx( 30, 50000, 700 );
if ( randomint( 100 ) < 10 )
var_2 maps\_utility::delaythread( 2, ::offset_thread, -7, 7, 3, -5, 5, 3 );
}
create_gamemessage_text( var_0, var_1 )
{
var_2 = newhudelem();
var_2.x = level.game_messages.text_x;
var_2.y = level.game_messages.text_y + var_1 * 20;
var_2.horzalign = "left";
var_2.vertalign = "top";
var_2.sort = 3;
var_2.foreground = 1;
var_2 settext( var_0 );
var_2.text = var_0;
var_2.alpha = 0;
var_2.hidewheninmenu = 1;
var_2.font = "default";
var_2.fontscale = 1.25;
if ( level.console )
var_2.fontscale = 1;
var_2.color = ( 0.85, 0.93, 0.92 );
var_2.glowalpha = 0;
level.game_messages.huds[level.game_messages.huds.size] = var_2;
return var_2;
}
stylized_line( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_7 = create_chyron_text( var_0, var_2, var_3 );
var_7.fontscale = 2;
var_7.horzalign = "subleft";
var_7.vertalign = "subtop";
var_7.aligny = "middle";
var_7.alignx = "center";
var_7.alpha = 1;
var_7.sort = 3;
if ( isdefined( var_5 ) )
var_7.glowcolor = var_5;
if ( !isdefined( var_6 ) )
var_6 = 20;
var_7 setpulsefx( var_6, 50000, 700 );
var_8 = [ var_7 ];
var_9 = dupe_style_hud( var_7, 2 );
foreach ( var_11 in var_9 )
{
var_11.alpha = 0;
var_11 thread hud_alpha( randomfloatrange( 0.5, 1.5 ), randomfloatrange( 0.05, 0.2 ), var_1 - 0.5 );
}
var_7 thread quick_pulse( 0 );
var_8 = common_scripts\utility::array_combine( var_9, var_8 );
return var_8;
}
hud_alpha( var_0, var_1, var_2 )
{
wait( var_0 );
self.alpha = var_1;
thread location_dupes_thread( var_2 - 0.5, 1 );
}
dupe_style_hud( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_1; var_3++ )
{
var_4 = newhudelem();
var_4.x = var_0.x;
var_4.y = var_0.y;
var_4.alpha = var_0.alpha;
var_4.aligny = var_0.aligny;
var_4.alignx = var_0.alignx;
var_4.horzalign = var_0.horzalign;
var_4.vertalign = var_0.vertalign;
var_4.foreground = var_0.foreground;
var_4.hidewheninmenu = var_0.hidewheninmenu;
var_4.fontscale = var_0.fontscale;
var_4.sort = var_0.sort;
var_4.color = var_0.color;
var_4 settext( var_0.text );
var_2[var_2.size] = var_4;
}
return var_2;
}
stylized_fadeout( var_0, var_1, var_2, var_3 )
{
var_4 = newhudelem();
var_4.x = var_1;
var_4.y = var_2 + ( var_3 - 1 ) * 10;
var_4.alignx = "center";
var_4.aligny = "middle";
var_4.horzalign = "subleft";
var_4.vertalign = "subtop";
var_4.sort = 1;
var_4.foreground = 1;
var_4.hidewheninmenu = 1;
var_4.alpha = 0;
var_5 = var_3 * 40 + 20;
var_4 setshader( "white", 1, var_5 );
var_4.color = ( 0.85, 0.93, 0.92 );
var_4 fadeovertime( 0.25 );
var_4.alpha = 0.1;
var_4 scaleovertime( 0.1, 2000, var_5 );
wait 0.1;
common_scripts\utility::array_thread( var_0, ::hud_destroy, 0.1 );
var_6 = 0.15;
var_4 fadeovertime( 0.25 );
var_4.alpha = 0.2;
var_4.color = ( 1, 1, 1 );
var_4 scaleovertime( var_6, 2000, 2 );
wait( var_6 );
var_4 scaleovertime( var_6, 2, 2 );
var_4 fadeovertime( var_6 );
var_4.alpha = 0;
wait( var_6 );
var_4 destroy();
}