531 lines
13 KiB
Plaintext
531 lines
13 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init()
|
|
{
|
|
register_end_game_string_index();
|
|
}
|
|
|
|
playpainoverlay( var_0, var_1, var_2 )
|
|
{
|
|
if ( maps\mp\_utility::isusingremote() && maps\mp\alien\_utility::is_true( self.vanguard_num ) )
|
|
return;
|
|
|
|
var_3 = get_damage_direction( var_2 );
|
|
|
|
if ( is_spitter_spit( var_1 ) )
|
|
play_spitter_pain_overlay( var_3 );
|
|
else if ( is_spitter_gas( var_1 ) )
|
|
play_spitter_pain_overlay( "center" );
|
|
else if ( is_elite_attack( var_0 ) )
|
|
playfxontagforclients( level._effect["vfx_melee_blood_spray"], self, "tag_eye", self );
|
|
else
|
|
play_basic_pain_overlay( var_3 );
|
|
}
|
|
|
|
get_damage_direction( var_0 )
|
|
{
|
|
var_1 = 0.965;
|
|
var_2 = [ "left", "center", "right" ];
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return var_2[randomint( var_2.size )];
|
|
|
|
var_0 = var_0 * -1;
|
|
var_3 = anglestoforward( self.angles );
|
|
var_4 = vectordot( var_0, var_3 );
|
|
|
|
if ( var_4 > var_1 )
|
|
return "center";
|
|
|
|
var_5 = anglestoright( self.angles );
|
|
var_6 = vectordot( var_0, var_5 );
|
|
|
|
if ( var_6 > 0 )
|
|
return "right";
|
|
else
|
|
return "left";
|
|
}
|
|
|
|
play_basic_pain_overlay( var_0 )
|
|
{
|
|
if ( var_0 == "left" )
|
|
playfxontagforclients( level._effect["vfx_blood_hit_left"], self, "tag_eye", self );
|
|
else if ( var_0 == "center" )
|
|
playfxontagforclients( level._effect["vfx_melee_blood_spray"], self, "tag_eye", self );
|
|
else if ( var_0 == "right" )
|
|
playfxontagforclients( level._effect["vfx_blood_hit_right"], self, "tag_eye", self );
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
play_spitter_pain_overlay( var_0 )
|
|
{
|
|
if ( var_0 == "left" )
|
|
playfxontagforclients( level._effect["vfx_alien_spitter_hit_left"], self, "tag_eye", self );
|
|
else if ( var_0 == "center" )
|
|
playfxontagforclients( level._effect["vfx_alien_spitter_hit_center"], self, "tag_eye", self );
|
|
else if ( var_0 == "right" )
|
|
playfxontagforclients( level._effect["vfx_alien_spitter_hit_right"], self, "tag_eye", self );
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
play_slash_pain_overlay( var_0 )
|
|
{
|
|
if ( var_0 == "center" )
|
|
var_0 = random_pick_r_or_l();
|
|
|
|
if ( var_0 == "left" )
|
|
playfxontagforclients( level._effect["vfx_blood_hit_left"], self, "tag_eye", self );
|
|
else if ( var_0 == "right" )
|
|
playfxontagforclients( level._effect["vfx_blood_hit_right"], self, "tag_eye", self );
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
play_goo_pain_overlay( var_0 )
|
|
{
|
|
if ( var_0 == "left" )
|
|
playfxontagforclients( level._effect["vfx_alien_spitter_hit_left"], self, "tag_eye", self );
|
|
else if ( var_0 == "center" )
|
|
playfxontagforclients( level._effect["vfx_alien_spitter_hit_center"], self, "tag_eye", self );
|
|
else if ( var_0 == "right" )
|
|
playfxontagforclients( level._effect["vfx_alien_spitter_hit_right"], self, "tag_eye", self );
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
random_pick_r_or_l()
|
|
{
|
|
if ( common_scripts\utility::cointoss() )
|
|
return "right";
|
|
else
|
|
return "left";
|
|
}
|
|
|
|
is_spitter_spit( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
return var_0 == "alienspit_mp";
|
|
}
|
|
|
|
is_spitter_gas( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
return var_0 == "alienspit_gas_mp";
|
|
}
|
|
|
|
is_elite_attack( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) || !var_0 maps\mp\alien\_utility::is_alien_agent() )
|
|
return 0;
|
|
|
|
return var_0 maps\mp\alien\_utility::get_alien_type() == "elite";
|
|
}
|
|
|
|
laststandupdatereviveiconcoloralien( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "game_ended" );
|
|
wait( var_0 / 3 );
|
|
self.color = ( 1, 0.64, 0 );
|
|
wait( var_0 / 3 );
|
|
self.color = ( 1, 0, 0 );
|
|
}
|
|
|
|
makereviveicon( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = newteamhudelem( var_0.team );
|
|
var_3 setshader( "waypoint_alien_revive", 8, 8 );
|
|
var_3 setwaypoint( 1, 1 );
|
|
var_3 settargetent( self );
|
|
var_3.color = var_1;
|
|
var_3 thread deletereviveicon( var_0 );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_3 thread laststandupdatereviveiconcoloralien( var_2 );
|
|
|
|
return var_3;
|
|
}
|
|
|
|
deletereviveicon( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
var_0 common_scripts\utility::waittill_any( "disconnect", "revive", "death" );
|
|
self destroy();
|
|
}
|
|
|
|
hidehudelementongameend( var_0 )
|
|
{
|
|
level waittill( "game_ended" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0.alpha = 0;
|
|
}
|
|
|
|
blocker_hive_hp_bar()
|
|
{
|
|
var_0 = 100000;
|
|
|
|
while ( isdefined( self ) && self.health > 0 )
|
|
{
|
|
common_scripts\utility::waittill_notify_or_timeout( "damage", 2 );
|
|
|
|
if ( !isdefined( self ) || self.health <= 0 )
|
|
break;
|
|
|
|
var_1 = max( 0.005, self.health / self.maxhealth );
|
|
var_2 = 100 - var_1 * 100;
|
|
var_3 = 0.5;
|
|
|
|
if ( abs( abs( var_0 ) - abs( var_2 ) ) > var_3 )
|
|
{
|
|
setomnvar( "ui_alien_boss_progression", var_2 );
|
|
var_0 = var_2;
|
|
}
|
|
}
|
|
|
|
setomnvar( "ui_alien_boss_status", 0 );
|
|
}
|
|
|
|
blocker_hive_chopper_hp_bar()
|
|
{
|
|
while ( isdefined( self ) && self.health > 0 )
|
|
{
|
|
common_scripts\utility::waittill_notify_or_timeout( "damage", 2 );
|
|
|
|
if ( !isdefined( self ) || self.health <= 0 )
|
|
break;
|
|
|
|
var_0 = self.health / self.maxhealth;
|
|
var_1 = var_0 * 100;
|
|
}
|
|
}
|
|
|
|
init_player_hud_onconnect()
|
|
{
|
|
visionsetpain( "near_death_mp" );
|
|
}
|
|
|
|
createspendhinthud( var_0, var_1, var_2 )
|
|
{
|
|
if ( !isdefined( var_2 ) )
|
|
maps\mp\_utility::setlowermessage( "spend_hint", &"ALIEN_COLLECTIBLES_PULL_TO_SPEND" );
|
|
else
|
|
maps\mp\_utility::setlowermessage( "spend_hint", var_2 );
|
|
|
|
thread hidespendhinticon();
|
|
}
|
|
|
|
hidespendhinticon()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
common_scripts\utility::waittill_any_timeout( 3, "action_finish_used", "player_action_slot_restart", "kill_spendhint" );
|
|
maps\mp\_utility::clearlowermessage( "spend_hint" );
|
|
}
|
|
|
|
intro_black_screen()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "stop_intro" );
|
|
self.introscreen_overlay = newclienthudelem( self );
|
|
self.introscreen_overlay.x = 0;
|
|
self.introscreen_overlay.y = 0;
|
|
self.introscreen_overlay setshader( "black", 640, 480 );
|
|
self.introscreen_overlay.alignx = "left";
|
|
self.introscreen_overlay.aligny = "top";
|
|
self.introscreen_overlay.sort = 1;
|
|
self.introscreen_overlay.horzalign = "fullscreen";
|
|
self.introscreen_overlay.vertalign = "fullscreen";
|
|
self.introscreen_overlay.alpha = 1;
|
|
self.introscreen_overlay.foreground = 1;
|
|
level waittill( "introscreen_over" );
|
|
self.introscreen_overlay fadeovertime( 3 );
|
|
self.introscreen_overlay.alpha = 0;
|
|
wait 3.5;
|
|
self.introscreen_overlay destroy();
|
|
}
|
|
|
|
introscreen_corner_line( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( level.intro_offset ) )
|
|
level.intro_offset = 0;
|
|
else
|
|
level.intro_offset++;
|
|
|
|
var_2 = cornerline_height();
|
|
var_3 = 1.6;
|
|
|
|
if ( level.splitscreen )
|
|
var_3 = 2;
|
|
|
|
var_4 = newhudelem();
|
|
var_4.x = 20;
|
|
var_4.y = var_2;
|
|
var_4.alignx = "left";
|
|
var_4.aligny = "bottom";
|
|
var_4.horzalign = "left";
|
|
var_4.vertalign = "bottom";
|
|
var_4.sort = 3;
|
|
var_4.foreground = 1;
|
|
var_4 settext( var_0 );
|
|
var_4.alpha = 1;
|
|
var_4.hidewheninmenu = 1;
|
|
var_4.fontscale = var_3;
|
|
var_4.color = ( 0.8, 1, 0.8 );
|
|
var_4.font = "default";
|
|
var_4.glowcolor = ( 0.3, 0.6, 0.3 );
|
|
var_4.glowalpha = 1;
|
|
var_4 setpulsefx( 35, 4000, 1000 );
|
|
return var_4;
|
|
}
|
|
|
|
cornerline_height()
|
|
{
|
|
var_0 = -92;
|
|
|
|
if ( level.splitscreen )
|
|
var_0 = -110;
|
|
|
|
return level.intro_offset * 20 - 92;
|
|
}
|
|
|
|
displayaliengameend( var_0, var_1 )
|
|
{
|
|
foreach ( var_3 in level.players )
|
|
{
|
|
if ( isdefined( var_3.connectedpostgame ) || var_3.pers["team"] == "spectator" )
|
|
continue;
|
|
|
|
var_3 thread alienoutcomenotify( var_0, var_1 );
|
|
var_3 thread maps\mp\_utility::freezecontrolswrapper( 1 );
|
|
}
|
|
|
|
level notify( "game_win", var_0 );
|
|
maps\mp\gametypes\_gamelogic::roundendwait( level.postroundtime, 1 );
|
|
}
|
|
|
|
alienoutcomenotify( var_0, var_1 )
|
|
{
|
|
self endon( "disconnect" );
|
|
self notify( "reset_outcome" );
|
|
wait 0.5;
|
|
var_2 = self.pers["team"];
|
|
|
|
if ( !isdefined( var_2 ) || var_2 != "allies" && var_2 != "axis" )
|
|
var_2 = "allies";
|
|
|
|
while ( maps\mp\gametypes\_hud_message::isdoingsplash() )
|
|
wait 0.05;
|
|
|
|
self endon( "reset_outcome" );
|
|
|
|
if ( isdefined( self.pers["team"] ) && var_0 == var_2 )
|
|
var_3 = get_end_game_string_index( "win" );
|
|
else
|
|
var_3 = get_end_game_string_index( "fail" );
|
|
|
|
self setclientomnvar( "ui_round_end_title", var_3 );
|
|
self setclientomnvar( "ui_round_end_reason", var_1 );
|
|
self setclientomnvar( "ui_alien_show_eog_score", 1 );
|
|
}
|
|
|
|
register_end_game_string_index()
|
|
{
|
|
if ( isdefined( level.end_game_string_override ) )
|
|
[[ level.end_game_string_override ]]();
|
|
else
|
|
register_default_end_game_string_index();
|
|
}
|
|
|
|
register_default_end_game_string_index()
|
|
{
|
|
level.end_game_string_index = [];
|
|
level.end_game_string_index["win"] = 1;
|
|
level.end_game_string_index["fail"] = 2;
|
|
level.end_game_string_index["all_escape"] = 1;
|
|
level.end_game_string_index["some_escape"] = 2;
|
|
level.end_game_string_index["fail_escape"] = 3;
|
|
level.end_game_string_index["drill_destroyed"] = 4;
|
|
level.end_game_string_index["kia"] = 5;
|
|
level.end_game_string_index["host_end"] = 6;
|
|
level.end_game_string_index["gas_fail"] = 7;
|
|
level.end_game_string_index["generator_destroyed"] = 8;
|
|
}
|
|
|
|
get_end_game_string_index( var_0 )
|
|
{
|
|
return level.end_game_string_index[var_0];
|
|
}
|
|
|
|
show_encounter_scores()
|
|
{
|
|
level endon( "game_ended " );
|
|
setomnvar( "ui_alien_show_encounter_score", 1 );
|
|
wait 1.0;
|
|
setomnvar( "ui_alien_show_encounter_score", 0 );
|
|
}
|
|
|
|
reset_player_encounter_lua_omnvars( var_0 )
|
|
{
|
|
var_1 = 8;
|
|
|
|
for ( var_2 = 1; var_2 <= var_1; var_2++ )
|
|
{
|
|
var_3 = "ui_alien_encounter_title_row_" + var_2;
|
|
var_4 = "ui_alien_encounter_score_row_" + var_2;
|
|
var_0 setclientomnvar( var_3, 0 );
|
|
var_0 setclientomnvar( var_4, 0 );
|
|
}
|
|
}
|
|
|
|
set_lua_encounter_score_row( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = "ui_alien_encounter_title_row_" + var_1;
|
|
var_5 = "ui_alien_encounter_score_row_" + var_1;
|
|
var_0 setclientomnvar( var_4, var_2 );
|
|
var_0 setclientomnvar( var_5, var_3 );
|
|
}
|
|
|
|
set_lua_eog_score_row( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = "ui_alien_eog_title_row_" + var_1;
|
|
var_5 = "ui_alien_eog_score_row_" + var_1;
|
|
var_0 setclientomnvar( var_4, var_2 );
|
|
var_0 setclientomnvar( var_5, var_3 );
|
|
}
|
|
|
|
make_waypoint( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
var_5 = newhudelem();
|
|
var_5 setshader( var_0, var_1, var_2 );
|
|
var_5.alpha = var_3;
|
|
var_5 setwaypoint( 1, 1 );
|
|
var_5.x = var_4[0];
|
|
var_5.y = var_4[1];
|
|
var_5.z = var_4[2];
|
|
return var_5;
|
|
}
|
|
|
|
chaos_hud_init()
|
|
{
|
|
level.last_combo_meter_reset_time = 0;
|
|
}
|
|
|
|
set_combo_counter( var_0 )
|
|
{
|
|
setomnvar( "ui_alien_chaos_combo_counter", var_0 );
|
|
}
|
|
|
|
set_score_streak( var_0 )
|
|
{
|
|
setomnvar( "ui_alien_chaos_score_streak", var_0 );
|
|
}
|
|
|
|
set_total_score( var_0 )
|
|
{
|
|
setomnvar( "ui_alien_chaos_total_score", var_0 );
|
|
}
|
|
|
|
reset_combo_meter( var_0 )
|
|
{
|
|
if ( is_combo_meter_reset_this_frame() )
|
|
return;
|
|
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
var_3 = gettime();
|
|
var_2 setclientomnvar( "ui_alien_chaos_combo_meter_start", var_3 );
|
|
var_2 setclientomnvar( "ui_alien_chaos_combo_meter_end", var_3 + int( var_0 * 1000 ) );
|
|
}
|
|
}
|
|
|
|
is_combo_meter_reset_this_frame()
|
|
{
|
|
var_0 = gettime();
|
|
var_1 = level.last_combo_meter_reset_time;
|
|
level.last_combo_meter_reset_time = var_0;
|
|
return var_0 == var_1;
|
|
}
|
|
|
|
set_grace_period_clock( var_0 )
|
|
{
|
|
setomnvar( "ui_alien_chaos_grace_period", var_0 );
|
|
}
|
|
|
|
unset_grace_period_clock()
|
|
{
|
|
setomnvar( "ui_alien_chaos_grace_period", 0 );
|
|
}
|
|
|
|
set_has_combo_freeze( var_0, var_1 )
|
|
{
|
|
var_0 setclientomnvar( "ui_alien_chaos_has_meter_freeze", var_1 );
|
|
}
|
|
|
|
freeze_combo_meter( var_0 )
|
|
{
|
|
var_1 = gettime();
|
|
setomnvar( "ui_alien_chaos_meter_freeze_start", var_1 );
|
|
setomnvar( "ui_alien_chaos_meter_freeze_end", var_1 + var_0 * 1000 );
|
|
}
|
|
|
|
unfreeze_combo_meter()
|
|
{
|
|
setomnvar( "ui_alien_chaos_meter_freeze_start", 0 );
|
|
setomnvar( "ui_alien_chaos_meter_freeze_end", 0 );
|
|
}
|
|
|
|
set_event_count( var_0, var_1 )
|
|
{
|
|
foreach ( var_3 in level.players )
|
|
var_3 setclientomnvar( "ui_alien_eog_score_row_" + var_0, var_1 );
|
|
}
|
|
|
|
set_has_chaos_class_skill_bonus( var_0, var_1 )
|
|
{
|
|
var_0 setclientomnvar( "ui_alien_chaos_class_skill_bonus", var_1 );
|
|
}
|
|
|
|
unset_has_chaos_class_skill_bonus( var_0 )
|
|
{
|
|
var_0 setclientomnvar( "ui_alien_chaos_class_skill_bonus", 0 );
|
|
}
|
|
|
|
set_last_stand_timer( var_0, var_1 )
|
|
{
|
|
var_0 setclientomnvar( "ui_laststand_end_milliseconds", gettime() + var_1 * 1000 );
|
|
}
|
|
|
|
clear_last_stand_timer( var_0 )
|
|
{
|
|
var_0 setclientomnvar( "ui_laststand_end_milliseconds", 0 );
|
|
}
|
|
|
|
turn_on_drill_meter_hud( var_0 )
|
|
{
|
|
setomnvar( "ui_alien_drill_state", 1 );
|
|
var_1 = int( gettime() + var_0 * 1000 );
|
|
setomnvar( "ui_alien_drill_start_milliseconds", gettime() );
|
|
setomnvar( "ui_alien_drill_end_milliseconds", var_1 );
|
|
}
|
|
|
|
update_drill_health( var_0 )
|
|
{
|
|
setomnvar( "ui_alien_drill_health_text", var_0 );
|
|
}
|