344 lines
8.2 KiB
Plaintext
344 lines
8.2 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init()
|
|
{
|
|
level thread init_fx_triggers();
|
|
level thread global_breakables_think();
|
|
level thread func_glass_handler();
|
|
level thread impact_override();
|
|
}
|
|
|
|
set_fungglass_life( var_0, var_1 )
|
|
{
|
|
setsaveddvar( "glass_damageToWeaken", var_0 );
|
|
setsaveddvar( "glass_damageToDestroy", var_1 );
|
|
}
|
|
|
|
global_breakables_think()
|
|
{
|
|
var_0 = getentarray( "vfx_breakable", "script_noteworthy" );
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( isdefined( var_3.script_parameters ) )
|
|
{
|
|
if ( issubstr( var_3.script_parameters, ".efx" ) || issubstr( var_3.script_parameters, ".EFX" ) || issubstr( var_3.script_parameters, "fx/" ) )
|
|
var_1[var_1.size] = var_3;
|
|
}
|
|
}
|
|
|
|
foreach ( var_6 in var_1 )
|
|
{
|
|
if ( isdefined( var_6.groupname ) && isdefined( var_6.script_spawn_pool ) )
|
|
{
|
|
var_7 = strtok( var_6.groupname, "|" );
|
|
|
|
foreach ( var_9 in var_7 )
|
|
{
|
|
if ( var_9 != "NO_MODEL" && var_9 != "no_model" )
|
|
precachemodel( var_9 );
|
|
}
|
|
|
|
var_11 = strtok( var_6.script_parameters, "|" );
|
|
var_12 = [];
|
|
var_13 = strtok( var_6.script_spawn_pool, "|" );
|
|
|
|
foreach ( var_15 in var_11 )
|
|
{
|
|
var_16 = strtok( var_15, "." )[0];
|
|
level._effect[var_16] = loadfx( var_16 );
|
|
var_12[var_12.size] = var_16;
|
|
}
|
|
|
|
var_6 thread global_breakable_wait( var_7, var_12, var_13, int( var_13[0] ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
global_breakable_target_damage_wait()
|
|
{
|
|
var_0 = self.origin;
|
|
self endon( "delete" );
|
|
|
|
while ( isdefined( self ) )
|
|
{
|
|
var_1 = self.target;
|
|
self waittill( "damage", var_2 );
|
|
var_3 = getentarray( var_1, "targetname" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( isdefined( var_5 ) )
|
|
var_5 dodamage( var_2, var_0 );
|
|
}
|
|
}
|
|
}
|
|
|
|
global_breakable_wait( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = self.origin;
|
|
|
|
if ( isdefined( self.target ) )
|
|
thread global_breakable_target_damage_wait();
|
|
|
|
self.health = var_3;
|
|
self setcandamage( 1 );
|
|
self waittill( "death" );
|
|
|
|
if ( !isdefined( self ) )
|
|
return;
|
|
|
|
var_5 = 0;
|
|
var_6 = var_3;
|
|
var_7 = 0;
|
|
|
|
foreach ( var_9 in var_2 )
|
|
{
|
|
var_10 = int( var_9 );
|
|
var_7 = var_7 + var_10;
|
|
}
|
|
|
|
var_12 = self.health * -1 + var_3;
|
|
var_13 = "";
|
|
var_14 = undefined;
|
|
|
|
if ( isdefined( self.targetname ) && self.targetname != "" )
|
|
var_13 = self.targetname;
|
|
|
|
if ( isdefined( self.target ) )
|
|
var_14 = self.target;
|
|
|
|
var_5 = -1;
|
|
|
|
if ( self.health != 0 )
|
|
{
|
|
foreach ( var_9 in var_2 )
|
|
{
|
|
var_10 = int( var_9 );
|
|
|
|
if ( var_12 > var_10 )
|
|
{
|
|
var_12 = var_12 - var_10;
|
|
var_5++;
|
|
continue;
|
|
}
|
|
|
|
var_6 = var_10 - var_12;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( var_5 < 0 )
|
|
var_5 = 0;
|
|
|
|
if ( var_5 > var_0.size - 1 )
|
|
var_5 = var_0.size - 1;
|
|
|
|
var_17 = ( 0, 0, 0 );
|
|
|
|
if ( isdefined( self.origin ) )
|
|
var_17 = self.origin;
|
|
|
|
var_18 = ( 0, 0, 0 );
|
|
|
|
if ( isdefined( self.angles ) )
|
|
var_18 = self.angles;
|
|
|
|
var_19 = undefined;
|
|
|
|
if ( isdefined( self.script_group ) && self.script_group != 0 )
|
|
var_19 = self.script_group;
|
|
|
|
playfx( level._effect[var_1[var_5]], self.origin, anglestoforward( self.angles ), anglestoup( self.angles ) );
|
|
self delete();
|
|
|
|
if ( var_0[var_5] != "NO_MODEL" && var_0[var_5] != "no_model" )
|
|
{
|
|
var_20 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_20.origin = var_17;
|
|
var_20.angles = var_18;
|
|
var_20.targetname = var_13;
|
|
var_20.target = var_14;
|
|
var_20.script_group = var_19;
|
|
var_20 setmodel( var_0[var_5] );
|
|
|
|
if ( var_0.size > var_5 + 1 )
|
|
{
|
|
for ( var_21 = 0; var_21 < var_5 + 1; var_21++ )
|
|
{
|
|
var_0 = maps\_utility::array_remove_index( var_0, 0 );
|
|
var_1 = maps\_utility::array_remove_index( var_1, 0 );
|
|
var_2 = maps\_utility::array_remove_index( var_2, 0 );
|
|
}
|
|
|
|
var_22 = var_6;
|
|
|
|
if ( var_22 <= 0 )
|
|
var_22 = 1;
|
|
|
|
var_20.health = var_22;
|
|
var_20 thread global_breakable_wait( var_0, var_1, var_2, var_20.health );
|
|
return;
|
|
}
|
|
|
|
if ( isdefined( var_19 ) )
|
|
{
|
|
radiusdamage( var_20.origin, var_19, int( var_2[0] ) * 2, int( var_2[0] ) / 2 );
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
global_fx_array_to_string( var_0 )
|
|
{
|
|
var_1 = "";
|
|
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
{
|
|
var_1 = var_1 + var_0[var_2];
|
|
|
|
if ( var_2 != var_0.size - 1 )
|
|
var_1 = var_1 + "|";
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
init_fx_triggers()
|
|
{
|
|
var_0 = getentarray( "fx_trigger", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::handle_exploder_trigger );
|
|
}
|
|
|
|
handle_exploder_trigger()
|
|
{
|
|
if ( !common_scripts\utility::flag_exist( self.script_flag ) )
|
|
common_scripts\utility::flag_init( self.script_flag );
|
|
|
|
var_0 = strtok( self.script_flag, "_" );
|
|
var_1 = var_0[1];
|
|
|
|
if ( var_0.size == 2 )
|
|
{
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( self.script_flag );
|
|
common_scripts\_exploder::activate_exploder( var_1 );
|
|
common_scripts\utility::flag_waitopen( self.script_flag );
|
|
maps\_utility::stop_exploder( var_1 );
|
|
}
|
|
}
|
|
}
|
|
|
|
func_glass_handler()
|
|
{
|
|
var_0 = [];
|
|
var_1 = [];
|
|
var_2 = getentarray( "vfx_custom_glass", "targetname" );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
{
|
|
if ( isdefined( var_4.script_noteworthy ) )
|
|
{
|
|
var_5 = getglass( var_4.script_noteworthy );
|
|
|
|
if ( isdefined( var_5 ) )
|
|
{
|
|
var_1[var_5] = var_4;
|
|
var_0[var_0.size] = var_5;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_7 = var_0.size;
|
|
var_8 = var_0.size;
|
|
var_9 = 5;
|
|
var_10 = 0;
|
|
|
|
while ( var_7 != 0 )
|
|
{
|
|
var_11 = var_10 + var_9 - 1;
|
|
|
|
if ( var_11 > var_8 )
|
|
var_11 = var_8;
|
|
|
|
if ( var_10 == var_8 )
|
|
var_10 = 0;
|
|
|
|
while ( var_10 < var_11 )
|
|
{
|
|
var_12 = var_0[var_10];
|
|
var_4 = var_1[var_12];
|
|
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
if ( isglassdestroyed( var_12 ) )
|
|
{
|
|
var_4 delete();
|
|
var_7--;
|
|
var_1[var_12] = undefined;
|
|
}
|
|
}
|
|
|
|
var_10++;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
impact_override()
|
|
{
|
|
var_0 = getentarray( "vfx_impact_override", "targetname" );
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( isdefined( var_3.script_parameters ) )
|
|
{
|
|
if ( issubstr( var_3.script_parameters, ".efx" ) || issubstr( var_3.script_parameters, ".EFX" ) || issubstr( var_3.script_parameters, "fx/" ) )
|
|
{
|
|
var_4 = strtok( var_3.script_parameters, "." )[0];
|
|
level._effect[var_4] = loadfx( var_4 );
|
|
var_3.script_parameters = var_4;
|
|
var_3 thread impact_override_object_damage_check();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
impact_override_object_damage_check()
|
|
{
|
|
self setcandamage( 1 );
|
|
self.health = 1000;
|
|
self endon( "delete" );
|
|
var_0 = undefined;
|
|
var_1 = undefined;
|
|
var_2 = undefined;
|
|
var_3 = undefined;
|
|
|
|
for ( var_4 = undefined; isdefined( self ); self.health = 1000 )
|
|
{
|
|
self waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
|
|
var_4 = tolower( var_4 );
|
|
|
|
switch ( var_4 )
|
|
{
|
|
case "mod_rifle_bullet":
|
|
case "mod_pistol_bullet":
|
|
case "bullet":
|
|
case "mod_projectile":
|
|
var_5 = self.script_parameters;
|
|
playfx( level._effect[var_5], var_3, anglestoforward( vectortoangles( var_2 ) ), anglestoup( vectortoangles( var_2 ) ) );
|
|
}
|
|
}
|
|
}
|