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

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;
}
}