294 lines
7.4 KiB
Plaintext
294 lines
7.4 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
common_scripts\utility::flag_init( "coop_game" );
|
|
|
|
if ( !maps\_utility::is_coop() )
|
|
return;
|
|
|
|
common_scripts\utility::flag_set( "coop_game" );
|
|
common_scripts\utility::flag_init( "coop_show_constant_icon" );
|
|
setdvarifuninitialized( "coop_show_constant_icon", 1 );
|
|
|
|
if ( getdvarint( "coop_show_constant_icon" ) == 1 )
|
|
common_scripts\utility::flag_set( "coop_show_constant_icon" );
|
|
|
|
precacheshader( "hint_health" );
|
|
precacheshader( "coop_player_location" );
|
|
precacheshader( "coop_player_location_fire" );
|
|
level.coop_icon_blinktime = 7;
|
|
level.coop_icon_blinkcrement = 0.375;
|
|
level.coop_revive_nag_hud_refreshtime = 20;
|
|
|
|
foreach ( var_1 in level.players )
|
|
{
|
|
var_1.colorblind = var_1 getlocalplayerprofiledata( "colorBlind" );
|
|
var_1 thread initialize_colors( var_1.colorblind );
|
|
var_1 thread friendly_hud_init();
|
|
}
|
|
}
|
|
|
|
initialize_colors( var_0 )
|
|
{
|
|
if ( var_0 )
|
|
{
|
|
var_1 = ( 0.35, 1, 1 );
|
|
var_2 = ( 1, 0.65, 0.2 );
|
|
var_3 = ( 1, 1, 1 );
|
|
self.coop_icon_color_normal = var_1;
|
|
self.coop_icon_color_downed = var_2;
|
|
self.coop_icon_color_shoot = var_1;
|
|
self.coop_icon_color_damage = var_3;
|
|
self.coop_icon_color_dying = var_2;
|
|
self.coop_icon_color_blink = var_3;
|
|
}
|
|
else
|
|
{
|
|
var_4 = ( 0.635, 0.929, 0.604 );
|
|
var_5 = ( 1, 1, 0.2 );
|
|
var_2 = ( 1, 0.65, 0.2 );
|
|
var_6 = ( 1, 0.2, 0.2 );
|
|
var_3 = ( 1, 1, 1 );
|
|
self.coop_icon_color_normal = var_4;
|
|
self.coop_icon_color_downed = var_5;
|
|
self.coop_icon_color_shoot = var_4;
|
|
self.coop_icon_color_damage = var_2;
|
|
self.coop_icon_color_dying = var_6;
|
|
self.coop_icon_color_blink = var_3;
|
|
}
|
|
}
|
|
|
|
rebuild_friendly_icon( var_0, var_1, var_2 )
|
|
{
|
|
if ( isdefined( self.nofriendlyhudicon ) )
|
|
return;
|
|
|
|
if ( !isdefined( self.friendlyicon ) || self.friendlyicon.material != var_1 )
|
|
create_fresh_friendly_icon( var_1 );
|
|
|
|
self.friendlyicon.color = var_0;
|
|
|
|
if ( isdefined( var_2 ) && var_2 )
|
|
self.friendlyicon setwaypointedgestyle_rotatingicon();
|
|
}
|
|
|
|
create_fresh_friendly_icon( var_0 )
|
|
{
|
|
if ( isdefined( self.friendlyicon ) )
|
|
self.friendlyicon destroy();
|
|
|
|
self.friendlyicon = newclienthudelem( self );
|
|
self.friendlyicon setshader( var_0, 1, 1 );
|
|
self.friendlyicon setwaypoint( 1, 1, 0 );
|
|
self.friendlyicon setwaypointiconoffscreenonly();
|
|
self.friendlyicon settargetent( maps\_utility::get_other_player( self ) );
|
|
self.friendlyicon.material = var_0;
|
|
self.friendlyicon.hidewheninmenu = 1;
|
|
|
|
if ( common_scripts\utility::flag( "coop_show_constant_icon" ) )
|
|
self.friendlyicon.alpha = 1.0;
|
|
else
|
|
self.friendlyicon.alpha = 0.0;
|
|
}
|
|
|
|
friendly_hud_icon_blink_on_fire()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "weapon_fired" );
|
|
var_0 = maps\_utility::get_other_player( self );
|
|
var_0 thread friendly_hud_icon_flash( var_0.coop_icon_color_shoot, "coop_player_location_fire", 1 );
|
|
}
|
|
}
|
|
|
|
friendly_hud_icon_blink_on_damage()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "damage" );
|
|
var_0 = maps\_utility::get_other_player( self );
|
|
var_0 thread friendly_hud_icon_flash( var_0.coop_icon_color_damage, "coop_player_location", 1 );
|
|
}
|
|
}
|
|
|
|
friendly_hud_icon_flash( var_0, var_1, var_2 )
|
|
{
|
|
if ( isdefined( self.nofriendlyhudicon ) )
|
|
return;
|
|
|
|
self endon( "death" );
|
|
self notify( "flash_color_thread" );
|
|
self endon( "flash_color_thread" );
|
|
var_3 = maps\_utility::get_other_player( self );
|
|
|
|
if ( maps\_utility::is_player_down( var_3 ) )
|
|
return;
|
|
|
|
rebuild_friendly_icon( var_0, var_1, var_2 );
|
|
wait 0.5;
|
|
var_1 = friendlyhudicon_currentmaterial();
|
|
var_4 = friendlyhudicon_rotating();
|
|
rebuild_friendly_icon( self.coop_icon_color_normal, var_1, var_4 );
|
|
}
|
|
|
|
friendly_hud_init()
|
|
{
|
|
level endon( "special_op_terminated" );
|
|
friendlyhudicon_normal();
|
|
thread friendly_hud_icon_blink_on_fire();
|
|
thread friendly_hud_icon_blink_on_damage();
|
|
thread monitor_color_blind_toggle();
|
|
thread friendly_hud_destroy_on_mission_end();
|
|
|
|
if ( isdefined( self.nofriendlyhudicon ) )
|
|
return;
|
|
|
|
self.friendlyicon.alpha = 0.0;
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "coop_show_constant_icon" );
|
|
self.friendlyicon.alpha = 1.0;
|
|
common_scripts\utility::flag_waitopen( "coop_show_constant_icon" );
|
|
self.friendlyicon.alpha = 0.0;
|
|
}
|
|
}
|
|
|
|
friendly_hud_destroy_on_mission_end()
|
|
{
|
|
level waittill( "special_op_terminated" );
|
|
|
|
foreach ( var_1 in level.players )
|
|
var_1 player_friendly_hud_destroy();
|
|
}
|
|
|
|
player_friendly_hud_destroy()
|
|
{
|
|
if ( isdefined( self.friendlyicon ) )
|
|
self.friendlyicon destroy();
|
|
}
|
|
|
|
friendlyhudicon_hideall()
|
|
{
|
|
common_scripts\utility::flag_clear( "coop_show_constant_icon" );
|
|
}
|
|
|
|
friendlyhudicon_showall()
|
|
{
|
|
common_scripts\utility::flag_set( "coop_show_constant_icon" );
|
|
}
|
|
|
|
friendlyhudicon_disable()
|
|
{
|
|
self.nofriendlyhudicon = 1;
|
|
player_friendly_hud_destroy();
|
|
}
|
|
|
|
friendlyhudicon_enable()
|
|
{
|
|
self.nofriendlyhudicon = undefined;
|
|
|
|
if ( !isdefined( self.friendlyicon ) )
|
|
friendlyhudicon_normal();
|
|
}
|
|
|
|
friendlyhudicon_normal()
|
|
{
|
|
if ( !common_scripts\utility::flag( "coop_game" ) )
|
|
return;
|
|
|
|
self.coop_icon_state = "ICON_STATE_NORMAL";
|
|
var_0 = friendlyhudicon_currentmaterial();
|
|
var_1 = friendlyhudicon_rotating();
|
|
rebuild_friendly_icon( self.coop_icon_color_normal, var_0, var_1 );
|
|
}
|
|
|
|
friendlyhudicon_downed()
|
|
{
|
|
if ( !common_scripts\utility::flag( "coop_game" ) )
|
|
return;
|
|
|
|
self.coop_icon_state = "ICON_STATE_DOWNED";
|
|
var_0 = friendlyhudicon_currentmaterial();
|
|
var_1 = friendlyhudicon_rotating();
|
|
rebuild_friendly_icon( self.coop_icon_color_downed, var_0, var_1 );
|
|
}
|
|
|
|
friendlyhudicon_update( var_0 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "coop_game" ) )
|
|
return;
|
|
|
|
var_1 = friendlyhudicon_currentmaterial();
|
|
var_2 = friendlyhudicon_rotating();
|
|
rebuild_friendly_icon( var_0, var_1, var_2 );
|
|
}
|
|
|
|
friendlyhudicon_currentmaterial()
|
|
{
|
|
var_0 = "coop_player_location";
|
|
|
|
switch ( self.coop_icon_state )
|
|
{
|
|
case "ICON_STATE_NORMAL":
|
|
var_0 = "coop_player_location";
|
|
break;
|
|
case "ICON_STATE_DOWNED":
|
|
var_0 = "hint_health";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
friendlyhudicon_rotating()
|
|
{
|
|
var_0 = 0;
|
|
|
|
switch ( self.coop_icon_state )
|
|
{
|
|
case "ICON_STATE_NORMAL":
|
|
var_0 = 1;
|
|
break;
|
|
case "ICON_STATE_DOWNED":
|
|
var_0 = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
monitor_color_blind_toggle()
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( self getlocalplayerprofiledata( "colorBlind" ) != self.colorblind )
|
|
{
|
|
self.colorblind = self getlocalplayerprofiledata( "colorBlind" );
|
|
initialize_colors( self.colorblind );
|
|
|
|
switch ( self.coop_icon_state )
|
|
{
|
|
case "ICON_STATE_NORMAL":
|
|
friendlyhudicon_normal();
|
|
break;
|
|
case "ICON_STATE_DOWNED":
|
|
friendlyhudicon_downed();
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|