1152 lines
28 KiB
Plaintext
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();
|
|
}
|