2024-02-13 13:20:49 +01:00

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